Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Criação de robôs em PHP para raspagem de dados

741 views

Published on

Palestra proferida pelo Google Hangouts para a Tempo Real Eventos

Published in: Software
  • Be the first to comment

Criação de robôs em PHP para raspagem de dados

  1. 1. www.fgsl.eti.br Criação de Robôs em PHP para Raspagem de Dados FLÁVIO GOMES DA SILVA LISBOAFGSL
  2. 2. www.fgsl.eti.br FGSL
  3. 3. www.fgsl.eti.brwww.fgsl.eti.br LANÇAMENTO https://www.casadocodigo.com.br/products/livro-php-zend 7º LIVRO PUBLICADO
  4. 4. www.fgsl.eti.br http://www.ftsl.org.br
  5. 5. www.fgsl.eti.br Primeira pergunta
  6. 6. www.fgsl.eti.br O que é um robô? O termo robô tem origem na palavra tcheca robota, que significa trabalho forçado. O robô presente no imaginário mundial teve origem numa peça do dramaturgo Karel Čapek, na qual existia um autômato com forma humana, capaz de fazer tudo em lugar do homem. Fonte: https://pt.wikipedia.org/wiki/Rob%C3%B4
  7. 7. www.fgsl.eti.br O que é um robô? Um robô (ou robot) é um dispositivo, ou grupo de dispositivos, eletromecânicos ou biomecânicos capazes de realizar trabalhos de maneira autônoma ou pré-programada. Fonte: https://pt.wikipedia.org/wiki/Rob%C3%B4
  8. 8. www.fgsl.eti.br O que é um robô?
  9. 9. www.fgsl.eti.br A aparência e a mobilidade não são os traços fundamentais
  10. 10. www.fgsl.eti.br Coisas que podem ser robôs
  11. 11. www.fgsl.eti.br Tópicos ● WYSIWWWYK ● Non ducor, duco. ● Captura do código-fonte de páginas. ● Captura da visão do usuário.
  12. 12. www.fgsl.eti.br WYSIWWWYK Pergunta enviada: O que quer dizer o WYSIWWWYK? What's (SIC) you see is ...?
  13. 13. www.fgsl.eti.br WYSIWWWYK Referência: WYSIWYG: What You See Is What You Get “O que você vê é o que você obtém” https://pt.wikipedia.org/wiki/WYSIWYG
  14. 14. www.fgsl.eti.br WYSIWWWYK Resposta: What You See Is What We Want You Know “O que você vê é o que nós queremos que você saiba”
  15. 15. www.fgsl.eti.br WYSIWWWYK 1984 (George Orwell) – Ministério da Verdade John Hurt como Winston na adaptação cinematográfica lançada em... 1984
  16. 16. www.fgsl.eti.br WYSIWWWYK Fake news TSE cita notícia falsa sobre notícia falsa para investigar notícias falsas... (28/03/2018) “Its like when I'm right I'm right, when I'm wrong I could been right, so I'm still right cause I coulda been wrong, you know, and I'm sorry cause I could be wrong right now, I could be wrong, but if I'm right... “ (Bama in Get Rich or Die Tryin’ (2005))
  17. 17. www.fgsl.eti.br WYSIWWWYK O que é a verdade? _Mesmo em sonhos, ninguém vê toda a verdade. _Que parte eu vou ver? - perguntou Aristarco. _A parte que você consegue ver – respondeu o mercador de sonhos.
  18. 18. www.fgsl.eti.br Non ducor, duco Pergunta enviada: E quando você fala o lema de SP "non ducor, duco" ("não sou conduzido, conduzo") , quer dizer o quê? Que os robôs não podem esperar as informações (nem formatos pré definidos ) e sim procurar o que precisa no formato que for necessário?
  19. 19. www.fgsl.eti.br Non ducor, duco
  20. 20. www.fgsl.eti.br Non ducor, duco Resposta: Uma motivação para fazer Data Scrapping no lugar de usar mecanismos de busca ou APIs prontas é não se deixar ser conduzido para o que querem que você veja, mas que você conduza sua busca para o que você realmente quer.
  21. 21. www.fgsl.eti.br Captura do código-fonte de páginas ● Browsers funcionam sobre o protocolo HTTP (Hypertext Transfer Protocol). ● HTTP trata da transferência de texto: um computador solicita um arquivo de texto para outro computador e este, se tiver o arquivo e permissão para isso, o envia.
  22. 22. www.fgsl.eti.br Captura do código-fonte de páginas ● O browser interpreta o texto, processando HTML, CSS e Javascript para produzir uma interface rica em apresentação de conteúdo e interação. ● O que você vê no browser não é o que ele recebe.
  23. 23. www.fgsl.eti.br Captura do código-fonte de páginas ● A captura de código-fonte de páginas consiste em obter os arquivos processados pelos browsers – sem usar os browsers.
  24. 24. www.fgsl.eti.br Captura da visão do usuário ● A captura da visão do usuário já consiste em obter dados da página processada pelo browser, a partir da simulação da navegação.
  25. 25. www.fgsl.eti.br Perguntas
  26. 26. www.fgsl.eti.br Pergunta: Gostaria de saber o bot mais rápido, e o que precisa saber na hora de contratar um servidor que possa fazer várias requisições. Sua RAM ou CPU? ou algo a mais? Abs.
  27. 27. www.fgsl.eti.br Resposta: Pra falar sobre comparação de velocidade é necessário estabelecer critérios de funcionalidade. Não faz sentido falar em velocidade absoluta se dois softwares tem objetivos diferentes. Você precisa estimar o volume de dados que vai tratar com uma prova de conceito para determinar uma configuração mínima de máquina. Isso pode ser feito com sua máquina pessoal.
  28. 28. www.fgsl.eti.br Pergunta: Onde mais se utiliza esses tipos de robôs?
  29. 29. www.fgsl.eti.br Resposta: Onde faltam APIs.
  30. 30. www.fgsl.eti.br Pergunta: Quais tipos de conteúdo não são possíveis de serem extraídos e seus motivos?
  31. 31. www.fgsl.eti.br Resposta: Os que são privados – e por isso tem restrições de acesso. Este curso é sobre acesso a dados públicos e não sobre invasão a dados privados.
  32. 32. www.fgsl.eti.br Pergunta: Em alguns sites, seja por medida de segurança, existem algumas exigências para que a raspagem de dados seja realizadas com sucesso. Umas dessas exigência são os cookies. Como podemos utilizar os cookies e assim conseguir acessar as informações que desejamos?
  33. 33. www.fgsl.eti.br Resposta: Você pode identificar os cookies no cabeçalho das respostas das requisições, armazená-los e enviá-los nas próximas requisições.
  34. 34. www.fgsl.eti.br Pergunta: Como capturar dados que são inseridos na página via JavaScript?
  35. 35. www.fgsl.eti.br Resposta: Javascript pode inserir dados na página visível a partir de código-fonte invisível para o usuário ou a partir da resposta à requisições HTTP assíncronas. Os dois casos são cobertos pela abordagem de captura de código fonte de página, que envolve a exploração de conteúdo de respostas HTTP em qualquer formato.
  36. 36. www.fgsl.eti.br Pergunta: Quais são os softwares de mercado mais utilizados para webscraping?
  37. 37. www.fgsl.eti.br Resposta: São os mecanismos de busca.
  38. 38. www.fgsl.eti.br Pergunta: Pode utilizar essa ferramenta em qualquer sistema operacional?
  39. 39. www.fgsl.eti.br Resposta: Se estamos falando do PHP, sim, ele pode ser usado em qualquer um dos sistemas operacionais mais utilizados no mundo.
  40. 40. www.fgsl.eti.br Pergunta: Como manter as informações atualizadas em real time, CronJob é a melhor saída? É quais outras alternativas.
  41. 41. www.fgsl.eti.br Resposta: Essa pergunta parece se referir à exibição de dados de fontes externas. É possível fazer scrapping on-line, mas a questão do real time depende do tratamento dos dados. Se houver necessidade de tratamento, haverá um intervalo maior entre a captura e a exibição.
  42. 42. www.fgsl.eti.br Pergunta: teria como (SIC) a quebra de CAPTCHA com php?
  43. 43. www.fgsl.eti.br Resposta: Sim. Há estratégias de alto e baixo desempenho. Uma de alto desempenho é resolver antecipadamente um lote de CAPTCHAS e montar um mapa imagem => solução. Assim, basta fazer o download da imagem e comparar com a base para obter a solução. Uma outra de baixo desempenho é baixar a imagem, tentar fazer o reconhecimento com software específico e submeter a possível solução – com risco de bloqueio por tentativa.
  44. 44. www.fgsl.eti.br Pergunta: É possível utilizar algum OCR com o PHP para burlar captchas ? Sem utilizar serviços de terceiros como DeathByCaptcha, etc... Obg
  45. 45. www.fgsl.eti.br Resposta: É possível usar OCR com componentes instalados no servidor do scrapper.
  46. 46. www.fgsl.eti.br Pergunta: Caso não seja dito na palestra. Gostaria de saber, se comparado ao mesmo serviço realizado em python, quais as vantagens e desvantagem (ou diferenças ) no uso de php ou python ? Ou seria mais pra manter o projeto menos multi-linguagem possível.
  47. 47. www.fgsl.eti.br Resposta: um exemplo Capturar os 500 primeiros caracteres de uma página HTML. Alvo: http://www.imdb.com/search/title? release_date=2017&sort= num_votes,desc&page=1
  48. 48. www.fgsl.eti.br Como é em Python from requests import get url = 'http://www.imdb.com/search/title? release_date=2017&sort=num_votes,desc&page=1' response = get(url) print(response.text[:500]) Fonte: https://medium.com/machina-sapiens/raspagem-de-dados-com- python-e-beautifulsoup-1b1b7019774c
  49. 49. www.fgsl.eti.br Detalhe: precisa de um módulo O módulo python-requests precisa ser instalado para que o script anterior funcione. Em distribuições baseadas em Debian: sudo apt-get install python-requests Em distribuições baseadas em Red Hat: sudo yum install python-requests
  50. 50. www.fgsl.eti.br Como é em PHP <?php $url = 'http://www.imdb.com/search/title? release_date=2017&sort=num_votes,desc&page=1'; $response = file_get_contents($url, false, stream_context_create(['http' => ['method' => 'get']])); echo substr($response,0, 500);
  51. 51. www.fgsl.eti.br Detalhe: não precisa de módulo
  52. 52. www.fgsl.eti.br Obrigado! ● http://temporealeventos.blogspot.com.br ● http://www.fgsl.eti.br

×