PHPを使って外部サイトからHTML文書の一部を抽出(解析)したい
例: yahoo からニュースを抽出するために、 sourceforgeの SimpleHTML DOM Parser を使用してみました
<?php
$url="http://news.yahoo.com/einsteins-brain-now-interactive-ipad-app-071441969.html";
include('simple_html_dom.php');
$html=new simple_html_dom();
$html->load_file($url);
$xxx=$html->find('title')->innertext;
echo $xxx;
?>
致命的なエラー: 行 1113 の /home/a1234bc/public_html/simple_html_dom.php の非オブジェクトに対するメンバー関数 find() の呼び出し
次に、ロードされたhtmlをエコーしようとしました
<?php
$url="http://news.yahoo.com/einsteins-brain-now-interactive-ipad-app-071441969.html";
include('simple_html_dom.php');
$html=new simple_html_dom();
$html->load_file($url);
echo $html;
?>
今私は得る:
致命的なエラー: 1688 行目の /home/a1234bc/public_html/simple_html_dom.php の非オブジェクトに対するメンバー関数 innertext() の呼び出し
file_get_contents() を通じて DOMDocument() も使用してみました
<?php
$url="http://news.yahoo.com/einsteins-brain-now-interactive-ipad-app-071441969.html";
$content = file_get_contents($url);
// echo $content works perfect
$doc = new DOMDocument();
$doc->loadHTML($content);
$jjj=$doc->getElementsByTagName('title')->item(0);
echo $jjj;
?>
これにより、非常に長い警告リストが表示されます。最初の 10 個だけをコピペしてみましょう
警告: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: Entity に名前がありません。行: 37 行目の /home/a1234bc/public_html/simple_html_dom.php の 166
警告: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: ';' が必要です エンティティの行: 37 行目の /home/a1234bc/public_html/simple_html_dom.php の 166
警告: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: Entity に名前がありません。行: 37 行目の /home/a1234bc/public_html/simple_html_dom.php の 256
警告: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: ';' が必要です エンティティの行: 37 行目の /home/a1234bc/public_html/simple_html_dom.php の 256
警告: DOMDocument::loadHTML() [domdocument.loadhtml]: タグ fb:login-button がエンティティで無効です。行: 37 行目の /home/a1234bc/public_html/simple_html_dom.php の 256
警告: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: ';' が必要です エンティティの行: 37 行目の /home/a1234bc/public_html/simple_html_dom.php の 275
警告: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: ';' が必要です エンティティの行: 37 行目の /home/a1234bc/public_html/simple_html_dom.php の 287
警告: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: ';' が必要です エンティティの行: 37 行目の /home/a1234bc/public_html/simple_html_dom.php の 292
警告: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: ';' が必要です エンティティの行: 311 in /home/a1234bc/public_html/simple_html_dom.php 行 37
警告: DOMDocument::loadHTML() [domdocument.loadhtml]: Entity で再定義された属性クラス、行: 325 行目 /home/a1234bc/public_html/simple_html_dom.php の 37 行目
誰かが私を正しい方向に向けることができますか?