0

私は自分のコードからこのエラーを受け取り続けていますが、何が間違っているのかわかりません。これは時々発生し、必要なときに機能するようです。

エラー

 Call to a member function find() on a non-object in C:\xampp\htdocs\sites\P\Find.php on line 265

基本的に、Webページで要素を検索するクローラーを作成しました。この要素がページに存在しない場合があります。ifステートメントを使用してこれを確認します。

265行目は

if($page->find('div#olpDivId span.price'))

コード

   $page = file_get_html('http://www.amazon.co.uk/dp/0304362212');

   if($page->find('div#olpDivId span.price')){
        foreach($page->find('div#olpDivId span.price') as $p){
            $i[] = floatval($p->plaintext);                 
        }
    }

本が存在しない場合、クローラーは空白の「申し訳ありませんが製品が存在しません」ページに移動します。私は何か間違ったことをしていますか?助けていただければ幸いです

4

1 に答える 1

1

file_get_htmlfalseを返す可能性があるため(Webページからコンテンツをフェッチできなかった場合)、でメソッドを使用する前に確認する必要があります。$page

$page = file_get_html('http://www.amazon.co.uk/dp/0304362212');

if($page !== FALSE){
    foreach($page->find('div#olpDivId span.price') as $p){
        $i[] = floatval($p->plaintext);                 
    }
 }
于 2012-05-09T18:03:56.840 に答える