Xpath表达式获取href。不只是锚文本

Xpath表达式获取href。不只是锚文本

问题描述:

玩弄xpath表达式试图学习它。我找到了一段代码,并对其进行了一些调整。我想要做的是获取页面上的每一个链接。Xpath表达式获取href。不只是锚文本

$baseurl = "http://www.example.com"; 
$html = file_get_contents($baseurl); 

$dom = new DOMDocument(); 
@$dom->loadHTML($html); 
$xpath = new DOMXPath($dom); 


$ahrefs = $xpath->query('//a'); 

foreach ($ahrefs as $ahref) { 
    echo $ahref->childNodes->item(0)->nodeValue . "<br />"; 
} 

但现在我抓住锚文本。我想要href部分。也许甚至两个。我究竟做错了什么?

为了让你有访问节点的attributes财产

echo $ahref->attributes->getNamedItem("href")->nodeValue . "<br />"; 

echo $ahref->getAttribute('href') . "<br />"; 

使用在href:

//a/@href 

没有额外的代码(除了这个表达式的评价) 是必要的。

+1

这对我有效!通用XPath解决方案,而不是PHP特定的笨拙代码。 – 2014-04-08 22:14:54

+0

@dhalperi,当然。 XPath是可移植的,并且XPath表达式可以在大多数编程语言不变的情况下使用。 – 2014-04-08 23:50:41