我正在建立一个小的抓取工具,它将从谷歌页面挖掘网址。我试图从“引用”中获取值,该值将URL保存为文本。我使用curl将网页加载到doms加载html。当我执行print_r时,显示结果。所以curl没有问题
下面是我的代码
$dom = new DOMDocument();
$dom->loadHTML($result);
$xpath = new DOMXPath($dom);
$elements = $xpath->query("//cite[@class='vurls']");
print_r($elements);
foreach ($elements as $entry)
{
print_r($entry);
//show cite url
}
当我在firefox xpath检查器中使用//cite[@class='vurls']
时,它会评估并显示所有引用文本。但在我的代码中,$elements
始终为空。
我也尝试了查询中的完整路径
//div[@id='ires']/ol[@id='rso']//li/div/div/div/div/cite
但它仍然返回一个空值。
示例查询
有人可以告诉我,我做错了什么吗?
答案 0 :(得分:0)
Google根据所使用的浏览器提供不同的HTML。看看你在PHP中收到的HTML,而不是在Firefox中。 @class
元素中没有<cite/>
属性,您需要找到另一种查询方式,例如。
//div[@class='kv']/cite
无论如何:不要解析谷歌搜索结果,他们提供了一个API来做到这一点。解析网站很可能会破坏(因为它们会随着时间而变化,而且经常会发生变化),API也很稳定。