java 中的网络抓取和数据处理
web scraping and data processing in java
我正在编写一个网络抓取程序来从雅虎财经、google 财经或纳斯达克提取股票报价。我可以获得包含股票价格的 html 元素,但我只需要结果中的美元价值。例如,示例输出如下图所示:
我在这里使用图片是因为当我发布实际的 html 时,只显示了美元金额(期望的结果),html 实体和标签消失了。
这是我的代码
我对 regEx 不是很熟悉,但我试过了但没有运气。如何从输出中只提取美元金额?
str_replace 会起作用。
它看起来像
$string = str_replace(' </td><td>.*?</td>',' </td>', $string);
.*?
将使用上面的代码匹配没有
的标签之间的值。找到正确的分隔符。 .*? or .*(?)
等
上面的代码将删除每个 <td>number</td>
的标签,同时保留每个 <td>$ number </td>
您在哪里找到如何抓取实时财务数据的?是在某处的 xml 提要中吗?
尝试使用 java.util.regex.Matcher
和 java.util.regex.Pattern
:
String pattern = "<td>\$&.+;(\d{1,4}\.\d{2})&";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(inputLine);
if (m.find( )) {
System.out.println("Price: $" + m.group(1) );
}
结果:
Price: 0.27 ...
示例:
我正在编写一个网络抓取程序来从雅虎财经、google 财经或纳斯达克提取股票报价。我可以获得包含股票价格的 html 元素,但我只需要结果中的美元价值。例如,示例输出如下图所示:
我在这里使用图片是因为当我发布实际的 html 时,只显示了美元金额(期望的结果),html 实体和标签消失了。
这是我的代码
str_replace 会起作用。
它看起来像
$string = str_replace(' </td><td>.*?</td>',' </td>', $string);
.*?
将使用上面的代码匹配没有
的标签之间的值。找到正确的分隔符。 .*? or .*(?)
等
上面的代码将删除每个 <td>number</td>
的标签,同时保留每个 <td>$ number </td>
您在哪里找到如何抓取实时财务数据的?是在某处的 xml 提要中吗?
尝试使用 java.util.regex.Matcher
和 java.util.regex.Pattern
:
String pattern = "<td>\$&.+;(\d{1,4}\.\d{2})&";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(inputLine);
if (m.find( )) {
System.out.println("Price: $" + m.group(1) );
}
结果:
Price: 0.27 ...
示例: