3

私はウェブプログラミングに近づいています。Web ページからいくつかの情報を取得する必要があります。ページの URL があるので、html ソース コードが必要です。それを xml に変換し、php の dom 関数を使用して必要な情報を取得します。

私のphpコードはこれです:

$url=$_POST['url']; //url

$doc_html=new DOMDocument();
$doc_html->loadHTML($url); //html page
$doc_xml=new DOMDocument();
$doc_xml->loadXML($doc_html->saveXML()); //xml converted page

$nome_app=new DOMElement($doc_xml->getElementById('title'));

echo $nome_app->nodeValue;

次の致命的なエラーが発生します。

この行に「無効な文字エラー」というメッセージを含む例外「DOMException」がキャッチされませんでした:

$nome_app=new DOMElement($doc_xml->getElementById('title'));

どうしたの?htmlからxmlへのプロセス全体ですか?私はウェブ上でいくつかの例を見つけましたが、うまくいくはずです...ありがとう!

4

4 に答える 4

2

解決しました!単に:

$doc_html=new DOMDocument();
$doc_html->loadHTML(file_get_contents($url));
$doc_html->saveXML();
$nome = $doc_html->getElementsByTagName('h1');
foreach ($nome as $n) { 
   echo $n->nodeValue, PHP_EOL;
}

以前はコードが乱雑だったのかもしれません。答えてくれてありがとう!

于 2012-10-30T22:48:21.513 に答える
1

HTML で使用している特殊文字の XML エンティティを定義する必要があります。これは、 DOMDocument::loadXML vs. HTML Entitiesと同じ種類の問題であるに違いありません。

于 2012-10-30T10:32:30.773 に答える
1

ドキュメント全体を XML として解析するよりも必要なコンテンツを取得するには、preg_match() ソリューションを使用します。特に、ドキュメントが何らかの理由で無効になった場合、情報を取得できなくなります。

于 2012-10-30T10:34:24.717 に答える
0

最善の方法は、xpath クエリを使用することです。

http://php.net/manual/en/simplexmlelement.xpath.php

とても速いです

于 2012-10-30T10:39:48.953 に答える