Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web scraping com Symfony Panther

Web scraping com Symfony Panther

Palestra apresentada no SymfonyLive Brasil São Paulo 2019
https://brasil2019.live.symfony.com/

Ferramentas como Guzzle e DomCrawler facilitam a criação de bots para navegar e obter dados de outros sistemas em puro HTML, porém a web evoluiu e temos SPAs construídas com Javascript e executadas client-side. Interagir com alerts e outros elementos dinâmicos tornou-se um problema para os bots.

Esta palestra apresenta o Symfony Panther, ferramenta de teste e2e e web crawler com suporte a execução de Javascript e interação com elementos de visuais, simulando um usuário com extrema fidelidade.

Cd0c263b28fce0e1d89a0002cc75648b?s=128

raphaeldealmeida

May 16, 2019
Tweet

Transcript

  1. Web scraping com Symfony Panther

  2. Raphael de Almeida

  3. No mundo ideal todas as aplicações compartilham dados via API

  4. Retornando dados estruturados

  5. Não apenas em JSON

  6. Richardson Maturity Model

  7. None
  8. A realidade nem sempre é essa

  9. Precisamos extrair dados estruturados de sites não tão estruturados assim

  10. Web Scraping

  11. web indexing data mining automatizações comparação de preços detecção de

    alterações
  12. Essa é fácil, cURL resolve Sou Hackudão

  13. None
  14. E como simular um usuário lendo HTML, manipulando formulários e

    tratando Cookies?
  15. Guzzle DomCrawler

  16. A Web evolui e com ela temos as SPA

  17. None
  18. https://www.linkedin.com/jobs/

  19. Ver código-fonte

  20. None
  21. protocolo WebDriver W3C Google Chrome Headless

  22. None
  23. None
  24. Show me the code

  25. None
  26. https://github.com/raphaeldealmeida/pokemon-memory-game-player

  27. Dicas

  28. Trabalhe com Page Object

  29. Crie logs para todas as ações importantes

  30. Monitore a execução do seu serviço

  31. Trate casos de time out

  32. Referências • https://github.com/symfony/panther • https://martinfowler.com/bliki/PageObject.html • https://symfony.com/doc/current/components/dom_crawler.html • http://docs.guzzlephp.org/en/stable/ •

    http://wttr.in/sao%20paulo • https://developers.google.com/web/updates/2017/04/headless-chrome • https://vue-pokemon-memory-game.vinicius73.dev/
  33. OBRIGADO @raph_almeida https://joind.in/talk/58e82