在非对象上调用成员函数find()

时间:2012-05-09 17:51:00

标签: php web-crawler simple-html-dom

我一直从我的代码中得到这个错误,我不知道我做错了什么,这种情况偶尔发生,似乎在它想要的时候工作

错误

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

我基本上创建了一个抓取工具,在网页上搜索网页上的元素,有时这个元素可能不会出现在页面上,我会使用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);                 
        }
    }

如果该书不存在,则抓取工具会转到空白的“抱歉产品不存在”页面 难道我做错了什么?任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

file_get_html可以返回false(如果无法从网页上获取内容),那么您应该在使用$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);                 
    }
 }