2

我正在尝试解析此页面

string str2 ("<span class=\"time_rtq_ticker\"><span id=\"yfs_l10_usdsgd=x\">");
  size_t found;

  // different member versions of find in the same order as above:
  found=sdata.find(str2);
  if (found!=string::npos)
    cout << "first 'needle' found at: " << int(found) << endl;

在我获得模式的“针”位置后如何获得货币汇率,我希望它在之后停止解析

对不起,我这样做是为了我的一个小项目,不是商业的,只是一些小作品

4

3 回答 3

3

雅虎不为此提供网络服务吗?这会更简单。检查这个:

http://developer.yahoo.com/finance/company.html

于 2012-07-23T16:16:53.277 回答
2

std::string.substr(pos,npos)会给你std::stringfrom pos (found在你的情况下)长度npos。要找出长度,您可能需要查找字符串“<”(下一个 html 标记的开头)并减去。

于 2012-07-23T18:17:58.233 回答
1

我认为您应该使用 @Adel Boutros 所说的 Yahoo Finance 提供的 API,或者如果您想自己解析这样的事情,您至少应该使用完整的 HTML 解析器类。

有很多变化,但本质上,它们会读取标签并为您提供数据内容 - 您只需要添加一些处理程序来捕获您感兴趣的标签。每个解析器的工作方式略有不同,并且在速度或简单性方面具有不同的优势,但它们非常直截了当,并且会更加...稳定?比你在做什么。

这是关于选择 C++ HTML 解析器的一个有趣的 SO(但它看起来不稳定)。就个人而言,我只是对 python 进行外部调用来解析它,或者制作一个小的 java EXE,你可以调用它来将下载的网页解析为更可用的格式(我更喜欢 python,但更多人知道 Java 和它'也会工作)。

https://stackoverflow.com/questions/489522/library-recommendation-c-html-parser

于 2012-07-23T16:23:18.420 回答