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))

それが返す

["ノード値"]=> 文字列(0) ""

何か案が ?

ありがとう!

4

2 に答える 2

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);
}
于 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 に答える