我正在尝试从this页面中的p元素中检索内容。如您所见,源代码中有一段包含我想要的内容:
<p id="qb"><!--
QBlastInfoBegin
Status=READY
QBlastInfoEnd
--></p>
其实我想要取得Status的价值。 这是我的PHP代码。
@$dom->loadHTML($ncbi->ncbi_request($params));
$XPath = new DOMXpath($dom);
$nodes = $XPath->query('//p[@id="qb"]');
$node = $nodes->item(0)->nodeValue;
var_dump($node))
返回
[&#34;的nodeValue&#34;] =&GT; string(0)&#34;&#34;
有什么想法吗?
谢谢!
答案 0 :(得分:2)
似乎要获取评论值,您需要使用//comment()
我对XPath不太熟悉,所以对确切的语法不太清楚
来源:https://stackoverflow.com/a/7548089/723139 / https://stackoverflow.com/a/1987555/723139
更新:使用工作代码
<?php
$data = file_get_contents('http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?RID=UY5PPBRH014&CMD=Get');
$dom = new DOMDocument();
@$dom->loadHTML($data);
$XPath = new DOMXpath($dom);
$nodes = $XPath->query('//p[@id="qb"]/comment()');
foreach ($nodes as $comment)
{
var_dump($comment->textContent);
}
答案 1 :(得分:1)
我检查了网站,看来你在评论里面,你需要在你的xpath查询中添加comment()
。考虑这个例子:
$contents = file_get_contents('http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?RID=UY5PPBRH014&CMD=Get');
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($contents);
libxml_clear_errors();
$xpath = new DOMXpath($dom);
$comment = $xpath->query('//p[@id="qb"]/comment()')->item(0)->nodeValue;
echo '<pre>';
print_r($comment);
输出:
QBlastInfoBegin
Status=READY
QBlastInfoEnd