Aviso: file_get_contents: não foi aberto o stream: limite de redirecionamento atingido, abortando

Eu li mais de 20 perguntas relacionadas neste site, pesquisadas no Google, mas sem uso. Eu sou novo no PHP e estou usando PHP Simple HTML DOM Parser para buscar um URL. Enquanto este script funciona com páginas de teste locais, ele simplesmente não funcionará com o URL para o qual eu preciso.

Aqui está o código que escrevi para isso, seguindo um arquivo de exemplo que veio com a biblioteca PHP Simple Simple Parser:

find('li.name ul#generalListing') as $e) echo $e->plaintext; ?> 

E esta é a mensagem de erro que recebo:

 Warning: file_get_contents(http://www.farmersagent.com/Results.aspx?isa=1&name=A&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 

Por favor, guie-me o que deve ser feito para que funcione. Eu sou novo por favor, sugira uma maneira simples. Ao ler outras perguntas e suas respostas neste site, tentei o método CURL para criar um identificador, mas não consegui fazê-lo funcionar. O método CURL que tentei continua retornando “Recursos” ou “Objetos”. Eu não sei como passar isso para Simple HTML DOM Parser para fazer $ html-> find () funcionar corretamente.

Por favor ajude! Obrigado!

Tinha um problema semelhante hoje. Eu estava usando CURL e não estava retornando meu erro. Testado com file_get_contents () e eu obtive …

Falha no stream aberto: limite de redirecionamento atingido, abortando em

Fez algumas buscas e acabei com esta function que funciona no meu caso …

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

O site estava procurando por um agente de usuário válido e por cookies .

A questão dos cookies estava causando isso! 🙂 Paz!

Resolvido com:

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

Você também pode informar se você tem um proxy no meio:

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

Usando cURL você precisaria ter a opção CURLOPT_RETURNTRANSFER definida como verdadeira para retornar o corpo da solicitação com chamada para curl_exec como este:

 $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); 

Não tenho certeza exatamente por que você redefiniu o object $ html com uma string de get html, o object deve ser usado para pesquisar a string. Se você replace o object por uma seqüência de caracteres, o object não existe mais e não pode ser usado.

Em qualquer caso, para pesquisar a string retornada de curl.

 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; ?> 

você pode estar pesquisando uma etiqueta diferente, o método é o mesmo

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