2012-05-09 34 views
0

我一直從我的代碼中得到這個錯誤,我不知道我在做什麼錯誤,這種情況發生在有些情況下,它似乎工作時,它想要調用成員函數查找()非對象

錯誤

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

我基本上創造了履帶,其搜索網頁中,網頁上的元素,有時這個元素可能不會出現在頁面上,並通過我如果使用的是檢查該聲明。

線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);     
     } 
    } 

如果書不存在爬蟲進入一個空白的「對不起產品不存在」 頁我做什麼錯誤?任何幫助,將不勝感激

+0

前,應檢查它向我們展示瞭如何設置的值'$ page'。 – phihag

+0

如果您忘記初始化'$ page'作爲對象,這將解釋問題。 – dpk2442

+0

我不認爲這是$ page –

回答

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);     
    } 
} 
+0

我應該考慮這一點,如果它失敗了,你認爲回憶這個方法是個好主意嗎? –

+0

這取決於什麼是失敗的原因。如果你的機器人由於過度爬行而被禁止,重複它將不起作用,並且只會使情況變得更糟。但另一方面,它可以通過服務器/網絡的暫時問題和第二次請求可能會成功。您可以嘗試通過curl獲取頁面內容並檢查響應標頭以獲取失敗請求的更好信息。 –

相關問題