我正在尝试从Google搜索页面获取链接。我正在使用低于xpath的
//div[@id='ires']/ol[@id='rso']/li/h3/a/@href
抓住链接。 xPather评估它并给出结果。但是,当我使用它与我的PHP它没有显示任何结果。有人可以告诉我我做错了什么吗? cURL没有任何问题。
下面是我的代码
$dom = new DOMDocument();
@$dom->loadHTML($result);
$xpath=new DOMXPath($dom);
$elements = $xpath->evaluate("//div[@id='ires']/ol[@id='rso']/li/h3/a");
foreach ($elements as $element)
{
$link = $element->getElementsByTagName("href")->item(0)->nodeValue;
echo $link."<br>";
}
Robert Pitt提供的示例Html
<li class="g w0">
<h3 class="r">
<a href="" class="l"><em>LINK</em></a>
</h3>
<button class="ws" title=""></button>
<div class="s">
META
</div>
</li>
答案 0 :(得分:3)
通过使用您引用的原始XPath表达式,您可以简化生活:
//div[@id='ires']/ol[@id='rso']/li/h3/a/@href
然后,遍历匹配的属性,如:
$hrefs = $xpath->evaluate(...);
foreach ($hrefs as $href) {
echo $href->value . "<br>";
}
请务必检查是否有匹配的属性(var_dump($hrefs->length)
就足够了。)
答案 1 :(得分:0)
没有名为href的元素,即属性:
$link = $element->getElementsByTagName("href")->item(0)->nodeValue;
你可以使用
$link = $element->getAttribute('href');
答案 2 :(得分:0)
$element->getElementsByTagName("a")
而不是
$element->getElementsByTagName("href")