私はいくつかのリンクを通過する必要があるためにも、クローラを持っています1つのサイトのスクレーパーを書き始めましたが、私はこのエラーを取得しています:PHPの簡単なHTMLのDOMパーサエラー
PHP Fatal error: Uncaught Error: Call to a member function find() on null in D:\Projekti\hemrank\simple_html_dom.php:1129 Stack trace:
0 D:\Projekti\hemrank\scrapeit.php(37): simple_html_dom->find('ul')
1 D:\Projekti\hemrank\scrapeit.php(19): ScrapeIt->getAllAddresses()
2 D:\Projekti\hemrank\scrapeit.php(55): ScrapeIt->run()
3 {main} thrown in D:\Projekti\hemrank\simple_html_dom.php on line 1129
私は$ html変数をvar_dumpするときに、すべてのタグなどを使って完全なhtmlを取得するので、$ htmlに実際に値が入っているときに、「nullのメンバー関数を呼び出す」と言うのは私にとっては奇妙なのです。ここで働いていないコードの一部です:
$html = new simple_html_dom();
$html->load_file($baseurl);
if(empty($html)){echo "HTTP Response not received!<br/>\n";exit;}
$links = array();
foreach ($html->find('ul') as $ul) {
if(!empty($ul) && (count($ul)>0))
foreach ($ul->find('li') as $li) {
if(!empty($li) && (count($li)>0))
foreach ($li->find('a') as $a) {
$links[] = $a->href;
}
else
die("NOT AVAILABLE");
}
}
return $links;
}
が、これはPHPの簡単なHTMLのDOMパーサに共通の問題ですが、解決策はありますか私はこするの他のいくつかの種類に切り替える必要がありますか?
PHPは['simple_html_dom'](http://php.net/results.php?q=simple_html_dom&l=ja&p=all)クラスを提供していません。 – axiac
私はそれがちょうど '$ html = file_get_html($ baseurl);だと思います。 –
この[リンク](https://stackoverflow.com/questions/6832197/weird-error-using-php-simple-html-dom参照) -parser) –