【发布时间】:2012-05-22 10:21:18
【问题描述】:
假设我有一个已加载的 html 文件,我运行此查询:
$url = 'http://www.fangraphs.com/players.aspx';
$html = file_get_contents($url);
$myDom = new DOMDocument;
$myDom->formatOutput = true;
@$myDom->loadHTML($html);
$anchor = $xpath->query('//a[contains(@href,"letter")]');
这给了我这些锚点的列表,如下所示:
<a href="players.aspx?letter=Aa">Aa</a>
但我需要一种只获取“players.aspx?letter=Aa”的方法。
我想我可以试试:
$anchor = $xpath->query('//a[contains(@href,"letter")]/@href');
但这给了我一个 php 错误,说我在尝试以下操作时无法附加节点:
$xpath = new DOMXPath($myDom);
$newDom = new DOMDocument;
$j = 0;
while( $myAnchor = $anchor->item($j++) ){
$node = $newDom->importNode( $myAnchor, true ); // import node
$newDom->appendChild($node);
}
知道如何仅获取第一个查询选择的 href 标记的值吗?谢谢!
【问题讨论】:
-
这对我来说没有任何错误..我可以看到更多代码吗,例如作为 newDom 的 DOM 的 xml?
-
是的,抱歉,我不清楚。不是 XML,而是加载的 HTML 文件。您能再看一下原始帖子吗?我已经编辑了它的顶部以反映我是如何获取 DOM 的。
-
仍然不够——你缺少
xpath和newDom的初始化位置 -
对不起,它们刚刚被初始化,所以我把它们排除在外。我已将它们添加到最后一个代码段中。 (在顶部)。再看看?抱歉给您添麻烦
-
你看了吗?
标签: php xpath html-parsing