抓取文本时,xpath返回空节点列表

时间:2014-02-04 07:15:03

标签: php xpath

我正在建立一个小的抓取工具,它将从谷歌页面挖掘网址。我试图从“引用”中获取值,该值将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

但它仍然返回一个空值。

示例查询

  

http://www.google.co.uk/search?q=xpath

有人可以告诉我,我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

Google根据所使用的浏览器提供不同的HTML。看看你在PHP中收到的HTML,而不是在Firefox中。 @class元素中没有<cite/>属性,您需要找到另一种查询方式,例如。

//div[@class='kv']/cite

无论如何:不要解析谷歌搜索结果,他们提供了一个API来做到这一点。解析网站很可能会破坏(因为它们会随着时间而变化,而且经常会发生变化),API也很稳定。