2014-10-18 2 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

код выглядит отлично, на первый взгляд, вы уверены, что первый вызов curl возвращает то, что вы ожидаете? – Shomz

+0

Нет, он не возвращает никакого значения, поскольку я даже пытался с ним – ahalya

+0

Да, url возвращает пустую строку для меня. – Shomz

ответ

0

Это может быть, что вы» когда вы загибаетесь внутри своей петли.

попробовать:

echo $element->src; 

в цикле и убедитесь, что он дает полный URL, и если он дает относительный URL, Снабдите ваш $ URL ему до керлинга.

0

Проблема является основным URL - при открытии его в браузере, вы увидите, что он перенаправляет к защищенному протоколу, поэтому обновление его https должен сделать код работы:

$url = "https://www.flickr.com/photos/terriek/galleries/72157622371738280/"; 
Смежные вопросы