Предупреждение: file_get_contents: не удалось открыть поток: достигнут предел перенаправления, прерван

Я прочитал более 20 связанных вопросов на этом сайте, искал в Google, но не использовал. Я новичок в PHP и использую PHP Simple HTML DOM Parser для получения URL-адреса. Хотя этот скрипт работает с локальными тестовыми страницами, он просто не будет работать с URL-адресом, для которого мне нужен сценарий.

Вот код, который я написал для этого, следуя примеру файла, который пришел с библиотекой PHP Simple DOM parser:

<?php include('simple_html_dom.php'); $html = file_get_html('http://www.farmersagent.com/Results.aspx?isa=1&name=A&csz=AL'); foreach($html->find('li.name ul#generalListing') as $e) echo $e->plaintext; ?> 

И это сообщение об ошибке, которое я получаю:

 Warning: file_get_contents(http://www.farmersagent.com/Results.aspx?isa=1&amp;name=A&amp;csz=AL) [function.file-get-contents]: failed to open stream: Redirection limit reached, aborting in /home/content/html/website.in/test/simple_html_dom.php on line 70 

Пожалуйста, расскажите мне, что нужно сделать, чтобы заставить его работать. Я новичок, поэтому попробуйте простой способ. Читая другие вопросы и их ответы на этом сайте, я попытался использовать метод cURL для создания дескриптора, но мне не удалось заставить его работать. Метод cURL, который я попробовал, продолжает возвращать «Ресурсы» или «Объекты». Я не знаю, как передать это простой HTML DOM Parser, чтобы корректно работать над $ html-> find ().

Пожалуйста помоги! Благодаря!

Related of "Предупреждение: file_get_contents: не удалось открыть поток: достигнут предел перенаправления, прерван"

Сегодня была аналогичная проблема. Я использовал CURL, и я не возвращал никаких ошибок. Протестировано с file_get_contents (), и я получил …

не удалось открыть поток: достигнут предел перенаправления, прерванный в

Сделал несколько поисков, и я закончил эту функцию, которая работает на моем случае …

 function getPage ($url) { $useragent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36'; $timeout= 120; $dir = dirname(__FILE__); $cookie_file = $dir . '/cookies/' . md5($_SERVER['REMOTE_ADDR']) . '.txt'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true ); curl_setopt($ch, CURLOPT_ENCODING, "" ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt($ch, CURLOPT_AUTOREFERER, true ); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout ); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout ); curl_setopt($ch, CURLOPT_MAXREDIRS, 10 ); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com/'); $content = curl_exec($ch); if(curl_errno($ch)) { echo 'error:' . curl_error($ch); } else { return $content; } curl_close($ch); } 

На веб-сайте проверялся действительный агент пользователя и файлы cookie .

Проблема с печеньем вызывала это! 🙂 Мир!

Используя cURL, вам необходимо установить для параметра CURLOPT_RETURNTRANSFER значение true, чтобы вернуть тело запроса с вызовом curl_exec следующим образом:

 $url = 'http://www.farmersagent.com/Results.aspx?isa=1&name=A&csz=AL'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // you may set this options if you need to follow redirects. Though I didn't get any in your case curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); $content = curl_exec($curl); curl_close($curl); $html = str_get_html($content); 

Решено:

 <?php $context = stream_context_create( array( 'http' => array( 'max_redirects' => 101 ) ) ); $content = file_get_contents('http://example.org/', false, $context); ?> 

Вы также можете сообщить, есть ли у вас прокси-сервер в середине:

 $aContext = array('http'=>array('proxy'=>$proxy,'request_fulluri'=>true)); $cxContext = stream_context_create($aContext); 

Я точно не знаю, почему вы переопределили объект $ html с помощью строки from get html. Объект предназначен для поиска строки. Если вы перезаписываете объект строкой, объект больше не существует и не может быть использован.

В любом случае, для поиска строки, возвращаемой из curl.

 <?php $url = 'http://www.example.com/Results.aspx?isa=1&name=A&csz=AL'; include('simple_html_dom.php'); # create object $html = new simple_html_dom(); #### CURL BLOCK #### $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); # you may set this options if you need to follow redirects. # Though I didn't get any in your case curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); $content = curl_exec($curl); curl_close($curl); # note the variable change. $string = str_get_html($content); # load the curl string into the object. $html->load($string); #### END CURL BLOCK #### # without the curl block above you would just use this. $html->load_file($url); # choose the tag to find, you're not looking for attributes here. $html->find('a'); # this is looking for anchor tags in the given string. # you output the attributes contents using the name of the attribute. echo $html->href; ?> в <?php $url = 'http://www.example.com/Results.aspx?isa=1&name=A&csz=AL'; include('simple_html_dom.php'); # create object $html = new simple_html_dom(); #### CURL BLOCK #### $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); # you may set this options if you need to follow redirects. # Though I didn't get any in your case curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); $content = curl_exec($curl); curl_close($curl); # note the variable change. $string = str_get_html($content); # load the curl string into the object. $html->load($string); #### END CURL BLOCK #### # without the curl block above you would just use this. $html->load_file($url); # choose the tag to find, you're not looking for attributes here. $html->find('a'); # this is looking for anchor tags in the given string. # you output the attributes contents using the name of the attribute. echo $html->href; ?> 

вы можете искать другой тег, метод тот же

 # just outputting a different tag attribute echo $html->class; echo $html->id;