0

我正在尝试从此页面中的 ap 元素中检索内容。如您所见,在源代码中有一段包含我想要的内容:

<p id="qb"><!--
QBlastInfoBegin
    Status=READY
QBlastInfoEnd
--></p>

其实我想取状态的价值。这是我的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))

返回

["nodeValue"]=> 字符串(0) ""

任何想法 ?

谢谢!

4

2 回答 2

2

似乎要获得您需要使用的注释值//comment() 我对 XPaths 不太熟悉,所以不太确定确切的语法

来源: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);
}
于 2014-06-29T12:46:50.553 回答
1

我检查了该站点,看来您在里面的评论之后,您需要添加comment()您的 xpath 查询。考虑这个例子:

$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
于 2014-06-29T12:51:39.627 回答