Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Obter dados de outro site

Estou desenvolvendo uma aplicação para obter dados de uma pagina web. Para isto estou tentando salvar o codigo html da pagina (loterias da caixa) em uma string e depois utilizar expressões regulares. Mas infelizmente estou obtendo o seguinte erro:

Message: file_get_contents(http://loterias.caixa.gov.br/wps/portal/loterias): failed to open stream: Redirection limit reached, aborting

Segue abaixo o que eu tentei:

public function obterHtml($url)
    {
        $conteudoSite = file_get_contents($url); 

        preg_match_all('<div class="product-column">', $conteudoSite, $conteudoRetornado);

        print_r($conteudoRetornado);
    }

Após alguns testes, para evitar os direcionamentos dos links tentei o seguinte:

    public function obterHtml($url)
    {

        $context = stream_context_create(
        array(
                'http' => array(
                    'follow_location' => false
                )
            )
        );

        $html = file_get_contents($url, false, $context);

        echo $html;

Neste caso o erro desaparece, entretanto o código fonte também não é impresso.

Agradeço quem ajudar.

Obrigado desde já. Att.

2 respostas
solução!

Por algum motivo bizarro esse site da caixa entra em redirect loop se o request não traz um header Cookie: security=true;. Testei varias combinacoes na linha de comando aqui e só colocando esse header ele devolve o HTML.

No PHP, algo assim:

       $context = stream_context_create(
        array(
                'http' => array(
                    'header' => 'Cookie: security=true;'
                )
            )
        );

        $html = file_get_contents($url, false, $context);

        echo $html;

Cara era isso mesmo. Valeuzão, jamais tentaria isso. E realmente, bizarro isso. kkk Abraços