我使用简单的dom解析器(php)从以下位置提取美元价格: http://www.lanacion.com.ar/dolar-tarjeta-t50462
<div class="numero floatFix">
<p class="peso">$</p>
<p id="dTarjeta" class="valor x35">
12,920
</p>
但我得到了跟随角色&#34; - &#34;而不是&#34; 12,290&#34;。我使用的代码是:
$url_to_traverse = 'http://www.lanacion.com.ar/dolar-tarjeta-t50462';
$html = file_get_html($url_to_traverse);
foreach($html->find('#dTarjeta') as $element)
{
var_dump($element->text());
}
我做错了什么? 希望有一个解决方案因为我尝试了很多库...
答案 0 :(得分:1)
这是因为,#dTarjeta中的数据是在页面加载后使用javascript提供的。即,当file_get_html函数读取url时,thsi就是它的样子:
<p id="dTarjeta" class="valor x35">-</p>
很明显,在加载页面后,#dTarjeta中的文本使用javascript使用ajax调用或类似的东西进行更改(Havent选中它)。
因此,您的问题的答案是,您获得了正确的输出,因为PHP无法使用客户端javascript呈现页面,并且它只呈现服务器首先发送的内容。
我建议您使用Phantomjs或simialr技术来抓取这些类型的页面。
使用以下命令验证:view-source:http://www.lanacion.com.ar/dolar-tarjeta-t50462
此外,您可以使用此stackoverflow问题:Scrape web pages in real time with Node.js 以供参考。
另外,如果您希望使用其他来源获取货币值,请考虑使用
此链接将帮助您使用PHP处理JSON API。 Get data from JSON file with PHP