SlideShare uma empresa Scribd logo
Raspagem de Dados com
Python
aka Hello, Scrapy!
Thiago Curvelo
● Estudei no IFPB & UFPB
● Trabalhei no TRT por 12 anos
como "faz-tudo developer"
● Hoje: Crawling Engineer @
Scrapinghub
● tcurvelo
We Are Hiring!
scrapinghub.com/jobs
Web Scraping
O que é?
Extração automatizada dos dados de
páginas da Web, e sua disponibilização
de forma estruturada.
Quando usar?
Quando a informação é pública, mas
não existe uma API
Para que serve?
É core para alguns
negócios:
● comparadores de preço
● intermediadores de compras
● agregadores de emprego
Usado em tomada de
decisão, em outros:
● acompanhar tendências
● monitorar marcas
● vigiar a concorrência
É um troço estratégico!
Mas...isso é legal?
● Seu bot deve ser educado!
● Usar os dados com ética
● Se você aceitar termos e condições, respeite!
Porém, sempre há um conflito de interesse.
Tá mas… como faz?
● um cliente HTTP baixa a página
● um parser encontra o que dado que você quer
● salvar só a informação que interessa
Scrapy
● framework para raspagem de dados
● open source, feito em Python
● poderoso!
○ requisições assíncronas
○ seletores css e xpath
○ vazão adaptativa
● extensível e configurável
○ middlewares, pipelines, extensões, signals
Mas pera,é Scraper ou
Crawler??
Spider!
Anatomia de um
Spider
Demo
Seletores: CSS vs XPath
CSS
h2
div.classe
#item::text
?
XPath
//h2
.//div[@class="classe"]
.//*[@id="item"]/text()
.//*[@id="item"]/../section
Dúvidas comuns
"Eu vejo o elemento
no browser,mas não
consigo pegar pelo
spider"
O browser é mais que um cliente HTTP
● Baixa a página
● Baixa outros recursos (css, imagens, js)
● Executa JavaScript
Inspect Element
!=
View Page Source
"O site que eu quero
tem muito JavaScript.
Não dá pra usar o
Scrapy"
A aba"Network"do browser é sua amiga!
● Procure pela API que o site consome
"Você não tá
entendendo.Tem
JavaScript para
cara...mba!"
Ok...às vezes o esforço não compensa
● Splash
● scrapy-selenium
● chromium headless (pyppeteer), em breve…
"Eu preciso me logar.
#comofaz"
"A ação que fiz na
página anterior,não
está refletindo na
atual.Bagunçou foi
tudo!"
Cookiejar!
"Eu consigo acessar
pelo browser,mas dá
erro pelo spider"
BAN!
● Você tá pegando leve?
○ Ative o autothrottle
● Você tá dando muita bandeira que é um bot?
○ Tente outro user-agent
● Se tudo o mais falhar, use um Proxy
Crawlera
https://scrapinghub.com/crawlera
Links Úteis
● Scrapy
○ https://scrapy.org/
● Tutorial do Scrapy em Vídeo:
○ https://www.youtube.com/watch?v=vkA1cWN4DEc&list=PLZyvi_9gamL-EE3zQJbU5N3nzJcf
NeFHU
● Scrapinghub:
○ Site: https://scrapinghub.com/
○ Jobs: https://scrapinghub.com/jobs
○ Crawlera: https://scrapinghub.com/crawlera
Valeu!
@tcurvelo
curvelo.net

Mais conteúdo relacionado

Semelhante a Raspagem de Dados com Python

It skills para rh aprender e contratar
It skills para rh  aprender e contratarIt skills para rh  aprender e contratar
It skills para rh aprender e contratar
Ale Uehara
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
Fernanda Ferreira
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
Fabio Janiszevski
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
Eduardo Bohrer
 
Arquitetura de Informação em 7 etapas
Arquitetura de Informação em 7 etapasArquitetura de Informação em 7 etapas
Arquitetura de Informação em 7 etapas
André Silveira
 
Html 5 datainfo
Html 5   datainfoHtml 5   datainfo
Html 5 datainfo
Romário J. Santos
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computing
Priscila Mayumi
 
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdfTDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
FernandoIto8
 
Seo completo-curso-udemy-072018
Seo completo-curso-udemy-072018Seo completo-curso-udemy-072018
Seo completo-curso-udemy-072018
Winnicius Costa
 
Desenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniterDesenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniter
Pedro Junior
 
Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9
Rodrigo Kono
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Bernardo Donadio
 
Desenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com PythonDesenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com Python
Roselma Mendes
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
André Luiz Forchesatto
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
Comunidade NetPonto
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
Evaldo Junior
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
Alvaro Viebrantz
 
Spring boot
Spring bootSpring boot
Spring boot
John Godoi
 
Web Design > Visão geral do Web Design
Web Design > Visão geral do Web DesignWeb Design > Visão geral do Web Design
Web Design > Visão geral do Web Design
Felipe Fernandes
 
Marcadores semânticos: usá-los ou usá-los
Marcadores semânticos: usá-los ou usá-losMarcadores semânticos: usá-los ou usá-los
Marcadores semânticos: usá-los ou usá-los
Márcio Vinícius Oliveira Sena
 

Semelhante a Raspagem de Dados com Python (20)

It skills para rh aprender e contratar
It skills para rh  aprender e contratarIt skills para rh  aprender e contratar
It skills para rh aprender e contratar
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Arquitetura de Informação em 7 etapas
Arquitetura de Informação em 7 etapasArquitetura de Informação em 7 etapas
Arquitetura de Informação em 7 etapas
 
Html 5 datainfo
Html 5   datainfoHtml 5   datainfo
Html 5 datainfo
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computing
 
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdfTDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
 
Seo completo-curso-udemy-072018
Seo completo-curso-udemy-072018Seo completo-curso-udemy-072018
Seo completo-curso-udemy-072018
 
Desenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniterDesenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniter
 
Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 
Desenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com PythonDesenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com Python
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Spring boot
Spring bootSpring boot
Spring boot
 
Web Design > Visão geral do Web Design
Web Design > Visão geral do Web DesignWeb Design > Visão geral do Web Design
Web Design > Visão geral do Web Design
 
Marcadores semânticos: usá-los ou usá-los
Marcadores semânticos: usá-los ou usá-losMarcadores semânticos: usá-los ou usá-los
Marcadores semânticos: usá-los ou usá-los
 

Raspagem de Dados com Python

  • 1. Raspagem de Dados com Python aka Hello, Scrapy!
  • 2. Thiago Curvelo ● Estudei no IFPB & UFPB ● Trabalhei no TRT por 12 anos como "faz-tudo developer" ● Hoje: Crawling Engineer @ Scrapinghub ● tcurvelo
  • 3.
  • 6. O que é? Extração automatizada dos dados de páginas da Web, e sua disponibilização de forma estruturada.
  • 7. Quando usar? Quando a informação é pública, mas não existe uma API
  • 8. Para que serve? É core para alguns negócios: ● comparadores de preço ● intermediadores de compras ● agregadores de emprego Usado em tomada de decisão, em outros: ● acompanhar tendências ● monitorar marcas ● vigiar a concorrência É um troço estratégico!
  • 9. Mas...isso é legal? ● Seu bot deve ser educado! ● Usar os dados com ética ● Se você aceitar termos e condições, respeite! Porém, sempre há um conflito de interesse.
  • 10. Tá mas… como faz? ● um cliente HTTP baixa a página ● um parser encontra o que dado que você quer ● salvar só a informação que interessa
  • 11. Scrapy ● framework para raspagem de dados ● open source, feito em Python ● poderoso! ○ requisições assíncronas ○ seletores css e xpath ○ vazão adaptativa ● extensível e configurável ○ middlewares, pipelines, extensões, signals
  • 12. Mas pera,é Scraper ou Crawler??
  • 15.
  • 16. Demo
  • 17.
  • 18.
  • 19. Seletores: CSS vs XPath CSS h2 div.classe #item::text ? XPath //h2 .//div[@class="classe"] .//*[@id="item"]/text() .//*[@id="item"]/../section
  • 21. "Eu vejo o elemento no browser,mas não consigo pegar pelo spider"
  • 22. O browser é mais que um cliente HTTP ● Baixa a página ● Baixa outros recursos (css, imagens, js) ● Executa JavaScript Inspect Element != View Page Source
  • 23. "O site que eu quero tem muito JavaScript. Não dá pra usar o Scrapy"
  • 24. A aba"Network"do browser é sua amiga! ● Procure pela API que o site consome
  • 26. Ok...às vezes o esforço não compensa ● Splash ● scrapy-selenium ● chromium headless (pyppeteer), em breve…
  • 27. "Eu preciso me logar. #comofaz"
  • 28.
  • 29. "A ação que fiz na página anterior,não está refletindo na atual.Bagunçou foi tudo!"
  • 31. "Eu consigo acessar pelo browser,mas dá erro pelo spider"
  • 32. BAN! ● Você tá pegando leve? ○ Ative o autothrottle ● Você tá dando muita bandeira que é um bot? ○ Tente outro user-agent ● Se tudo o mais falhar, use um Proxy Crawlera https://scrapinghub.com/crawlera
  • 33. Links Úteis ● Scrapy ○ https://scrapy.org/ ● Tutorial do Scrapy em Vídeo: ○ https://www.youtube.com/watch?v=vkA1cWN4DEc&list=PLZyvi_9gamL-EE3zQJbU5N3nzJcf NeFHU ● Scrapinghub: ○ Site: https://scrapinghub.com/ ○ Jobs: https://scrapinghub.com/jobs ○ Crawlera: https://scrapinghub.com/crawlera