2014-10-18 130 views
0

我有興趣嘗試使用網頁抓取。但我對這個錯誤引發,如果我使用下面的代碼 像(()致命錯誤:調用一個成員函數的innerText()一個非對象)php curl從網頁抓取圖片

include_once('simple_html_dom.php'); 

set_time_limit(300); 


$url = "http://www.flickr.com/photos/terriek/galleries/72157622371738280/"; 

echo $url; 
$ch = curl_init(); 

echo $ch; 

curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);  
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);  
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  
$result = curl_exec ($ch); 

//echo $result; 

curl_close($ch); 


$html = new simple_html_dom(); 

echo $html; 

$html->load($result); 

$exts = array('jpg', 'jpeg', 'png', 'gif'); 

foreach($html->find('img') as $element) // error with this line 

    $path_parts = pathinfo($element->src); 

    // if condition 

     $ch = curl_init($element->src); 


     $fp = fopen("imgs/".$path_parts['basename'], "wb"); 


     curl_setopt($ch, CURLOPT_FILE, $fp); 


     echo curl_exec($ch); 


     curl_close($ch); 

     fclose($fp); 
+0

代碼看起來乍一看很好,你確定第一次捲曲電話會返回你所期望的嗎? – Shomz 2014-10-18 06:02:24

+0

不,它沒有返回任何值,因爲我甚至嘗試過它 – ahalya 2014-10-18 08:54:57

+0

是的,該網址也爲我返回一個空字符串。 – Shomz 2014-10-18 14:42:58

回答

0

這可能是因爲你」當您在循環中捲曲時,請重新填寫完整的網址。

嘗試:

echo $element->src; 

在你的循環,並確保它給完整的URL,如果它是給一個相對URL,在前面加上你的$網址給它捲曲之前。

0

的問題是主要的URL - 當你在瀏覽器中打開它,你會看到它重定向到安全協議,所以它更新到https應該讓你的代碼工作:

$url = "https://www.flickr.com/photos/terriek/galleries/72157622371738280/";