Jump to content
DAMPA

web crawler com php não obtém todo o conteúdo da página

Recommended Posts

Olá a todos, estou desenvolvendo um crawler, mas estou tendo dificuldades em obter os dados da página.

Deixa eu explicar de forma detalhada

O crawler enxerga o html que a página gera, e tudo bem, a idéia é essa mesmo.

 

Estou buscando o "H1" da página e o crawler não encontra.

Quando acesso o site pelo navegador e clico em "ver código fonte" verifico que realmente o "H1" não existe, mas quando peço para "inspecionar elemento" pelo navegador o "H1" está lá, justamente na página que estou fazendo a pesquisa com o crawler.

Alguém me dá uma luz de como posso obter esses dados?

  • +1 1

Share this post


Link to post
Share on other sites

Provavelmente o H1 está vindo após a renderização da página... talvez via AJAX.

 

Com uma simples consulta no Google, encontrei isso:

http://stackoverflow.com/questions/28186645/php-get-page-content-after-all-dynamic-content-has-been-loaded

 

Veja se a resposta te ajuda.

  • +1 1

Share this post


Link to post
Share on other sites

Só complementado. Não apenas AJAX, interações realizadas por javascript, são interpretadas pelo browser. O PHP não interpretará ou executará conteúdo dinâmico.

Share this post


Link to post
Share on other sites
17 horas atrás, Gabriel Heming disse:

Só complementado. Não apenas AJAX, interações realizadas por javascript, são interpretadas pelo browser. O PHP não interpretará ou executará conteúdo dinâmico.

 

Então não conseguirei obter os dados através do PHP? Nem com phpwebdriver?

Share this post


Link to post
Share on other sites
12 minutos atrás, Maykel-ctba disse:

Chegou a tentar com o WebDriver, Dampa?

 

Estou apanhando aqui, pois essa será uma aplicação online, até baixei o webdriver do facebook no github, mas não tenho idéia de como funciona.

 

Estou buscando no google como utilizar, mas o conteúdo é pouco

Share this post


Link to post
Share on other sites

@Rodrigo Vieira E da Silva Acho que você não leu o tópico. O conteúdo é gerenciado dinamicamente, após o carregamento do browser, portanto estas soluções comuns não se aplicam.

 

@DAMPA Na boa? Eu desistiria de pegar o conteúdo de outro site.

Share this post


Link to post
Share on other sites
Em 28/03/2017 at 16:50, Maykel-ctba disse:

@Rodrigo Vieira E da Silva Acho que você não leu o tópico. O conteúdo é gerenciado dinamicamente, após o carregamento do browser, portanto estas soluções comuns não se aplicam.

 

@DAMPA Na boa? Eu desistiria de pegar o conteúdo de outro site.

 

O cliente quer obter esses dados, então terei que ralar para encontrar uma solução

 

Obrigado pelo feedback

Share this post


Link to post
Share on other sites

Contatar o site que disponibiliza esses dados, perguntando se rola fazer uma API ou algo do gênero?

 

Ou então chamar diretamente a chamada que ocorre em Ajax.

 

Ex:

index.php (ocorre uma chamada para a pagina 'header.php' e outra de 'dados.php'... ambas via ajax)

 

@ Dica:

Monitora a aba Network filtra pro XHR e você vai ver todas as chamadas que ocorrem de Ajax ;)

 

 

  • +1 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Machado_Dan
      Boa noite pessoal.
      Sou iniciante em PHP e estou tentando desenvolver um crawler em PHP para um projeto.
      Já consegui pegar as informações que preciso, porém o site que estou 'crawleando' só exibe 20 resultados por página. Dependendo de qual cidade é inserida no campo de busca, podemos ter X páginas para serem exibidas da 1ª a última.
      As páginas seguem o mesmo padrão com a númeração no final.
      Mas não estou tendo nenhuma ideia que funcione de como automatizar isso no crawler para que ele possa ler todas as páginas disponíveis.
      Alguem consegue me ajudar?

      Segue crawler:
       
      <?php   require "vendor/autoload.php";   use GuzzleHttp\Client; use Sunra\PhpSimple\HtmlDomParser;   $client = new Client([  'headers' => [   'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'  ] ]);   $URL = 'https://www.guiamais.com.br/encontre?searchbox=true&what=&where=S%C3%A3o+Paulo%2C+SP&page=1';   $html = $client->request("GET",$URL)->getBody(); $dom = HtmlDomParser::str_get_html($html);   foreach ($dom->find('meta[itemprop=url]') as $Key => $link){     $urlEmpresa = $link->content;     $html = $client->request("GET",$urlEmpresa)->getBody();   $domEmpresa = HtmlDomParser::str_get_html($html);     $basicsInfo = $domEmpresa->find('div.basicsInfo',0);   $extendedInfo = $domEmpresa->find('div.extendedInfo',0);     $titulo = html_entity_decode($basicsInfo->find('h1',0)->plaintext);   $categoria = html_entity_decode(trim($basicsInfo->find('p.category',0)->plaintext));     $endereco = preg_replace('/\s+/',' ',html_entity_decode(trim($extendedInfo->find('.advAddress',0)->plaintext)));     $telefones = [];   foreach($extendedInfo->find('li.detail') as $li){     $telefones[] = trim($li->plaintext);   }     echo $titulo.PHP_EOL.$categoria.PHP_EOL.$endereco.PHP_EOL;     echo'<pre>';   print_r($telefones);   echo'</pre>';     echo PHP_EOL.PHP_EOL.PHP_EOL;   }   ?>  
      Agradeço muito a ajuda.
       
      Abraços.
    • By Tardelli
      Olá pessoal, sou novo aqui. Estou com uma dúvida e gostaria de saber se vocês poderiam me ajudar. Tenho um blog de noticias no blogger há 10 anos. Antes meu blog aparecia com muita facilidade nos resultados no google, hoje em dia, quase não aparece. Tenho 26 mil postagens, já que é um blog de noticias. As postagens estão todas indexadas. Recentemente tive que trocar o template para um mais novo e moderno. Alguém me disse que os códigos do meu blog poderiam está com problemas. Será que vocês poderiam dá uma olhada no código fonte para perceberem alguma coisa de errada com o mesmo? Sou leigo e entendo o básico de HTML.
      meu site é o: www.catingueiraonline.com
    • By Alvaro Pacífico Serpa
      Olá pessoal, eu estava copiando um trecho de um código fonte usando o file_gets_contents
      $log=file_get_contents($url); $trechoInicial = "VideoUrl('"; $trechoFinal = "')"; $posicao1 = strpos($log, $trechoInicial); $posicao2 = strpos( $log, $trechoFinal, $posicao1 ); $trechoCopiado = substr( $log, $posicao1 + strlen( $trechoInicial ), $posicao2 - $posicao1 - strlen( $trechoInicial ) ); echo $trechoCopiado; Estava funcionando perfeitamente e do nada parou de funcionar, tem alguma outra forma de fazer isto que estou fazendo?
    • By JoãoNeto2
      Pessoal,
       
      Preciso automatizar um processo para pegar informações de alguns determinados sites.  Já vi vários exemplos de utilização de curl.
       
      Percebi que quando o site tem suas tags fixas funciona direito.  Mas quando preciso pegar algo variável parece que não consigo.
       
      Por exemplo, essa URL (https://startupbase.abstartups.com.br/startup/4000) contém o nome de uma Startup, cidade e outras informações.
       
      Não consigo pegar essa informação. Alguma dica?
       
      Abraço
    • By Lipe2106
      Eu estou terminando um site ele faz busca usando o cURL quando vou olha o código fonte no navegador (qualquer navegador) eu n'ao vejo o php nos editores (quando o arquivo ta no meu computador) eu vejo normal gostaria se existe alguma forma do visitante do meu site ter acesso a esse php ou no navegador ele ficara escondido?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.