SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
Scraping 
Vítor Baptista 
vitor@vitorbaptista.com
Qual o problema?
Websites 
● Requer envio de algum formulário? 
● Requer login? 
● Funciona sem JavaScript?
Website básico
Website com formulário
Website com login
Acessando elementos específicos 
● CSS Selectors (HTML) 
– .classe-css 
– #id-elemento 
– div#body 
● XPath (XML) 
– //table/td/tr
Ferramentas 
● ScraperWiki 
● ScrapingHub 
● Mechanize (Python, Ruby, ...) 
● Scrapy (Python) 
● Ghost (Python, para sites que requerem 
JavaScript)
PDFs 
● Se você consegue selecionar texto do PDF, 
ou seja, o PDF foi gerado por um programa 
qualquer, e não é simplesmente um 
documento escaneado, você está com sorte. 
● Se não, as técnicas são as mesmas pra 
quebrar CAPTCHA (vou falar a seguir)
Ferramentas 
● Pdftables 
● Tabula 
● ScraperWiki 
● pdftohtml
CAPTCHAS 
● Existem para evitar que pessoas 
automatizem o acesso a websites, seja para 
raspagem ou para criar contas 
● Para quebrar um CAPTCHA, primeiro baixamos 
um grande número de imagens, as resolvemos 
manualmente e usamos esse conjunto para 
treinar a ferramenta escolhida
Limpeza de ruído 
● ImageMagick
Ferramentas 
● GOCR 
● Tesseract 
● DeathByCaptcha
GOCR 
● Simples de usar 
● Funciona em 
CAPTCHAs mais 
simples
Tesseract 
● É a ferramenta livre mais poderosa 
● Desenvolvida desde 1985 inicialmente pela 
HP, depois pelo Google 
● Difícil de usar
E se eu não conseguir quebrar o CAPTCHA?
Death By Captcha 
● Uma das empresas que vende serviço de 
“quebra” de CAPTCHAs 
● Você envia a imagem do CAPTCHA e eles te 
devolvem a solução 
● São pessoas em algum lugar cujo trabalho é 
quebrar CAPTCHAS 
● US$ 1,39 por 1.000 CAPTCHAs (e você não 
paga pelos errados)
Etiqueta de crawling 
● Limite sua velocidade (normalmente uso 1 
requisição por segundo) 
● Adicione uma forma de contato ao seu User- 
Agent

Mais conteúdo relacionado

Destaque

Curso YaCy Mecanismo de Busca de Código Aberto
Curso YaCy Mecanismo de Busca de Código AbertoCurso YaCy Mecanismo de Busca de Código Aberto
Curso YaCy Mecanismo de Busca de Código AbertoJulio Della Flora
 
Capturando dados com Python - UAI Python
Capturando dados com Python - UAI PythonCapturando dados com Python - UAI Python
Capturando dados com Python - UAI PythonÁlvaro Justen
 
OpenData-BR, [Captando] Dados públicos brasileiros
OpenData-BR, [Captando] Dados públicos brasileirosOpenData-BR, [Captando] Dados públicos brasileiros
OpenData-BR, [Captando] Dados públicos brasileirosThiago Rondon
 
R ou Python para análise de dados
R ou Python para análise de dadosR ou Python para análise de dados
R ou Python para análise de dadosCiência e Dados
 
Novas ferramentas Python para Análise de Dados
Novas ferramentas Python para Análise de DadosNovas ferramentas Python para Análise de Dados
Novas ferramentas Python para Análise de DadosCiência e Dados
 
Scraping for fun and glory
Scraping for fun and gloryScraping for fun and glory
Scraping for fun and gloryitalomaia
 
Java Web Scraping
Java Web ScrapingJava Web Scraping
Java Web ScrapingSumant Raja
 
Desbravando o mundo dos webcrawlers
Desbravando o mundo dos webcrawlersDesbravando o mundo dos webcrawlers
Desbravando o mundo dos webcrawlersJoão Gabriel Lima
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaSidney Roberto
 
Python + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoPython + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoFernando Macedo
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonPedro Valente
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
6 DICAS PARA VOCÊ MELHORAR SUAS APRESENTAÇÕES
6 DICAS PARA VOCÊ MELHORAR SUAS APRESENTAÇÕES6 DICAS PARA VOCÊ MELHORAR SUAS APRESENTAÇÕES
6 DICAS PARA VOCÊ MELHORAR SUAS APRESENTAÇÕESRafael Camanho
 

Destaque (20)

Curso YaCy Mecanismo de Busca de Código Aberto
Curso YaCy Mecanismo de Busca de Código AbertoCurso YaCy Mecanismo de Busca de Código Aberto
Curso YaCy Mecanismo de Busca de Código Aberto
 
Capturando dados com Python - UAI Python
Capturando dados com Python - UAI PythonCapturando dados com Python - UAI Python
Capturando dados com Python - UAI Python
 
OpenData-BR, [Captando] Dados públicos brasileiros
OpenData-BR, [Captando] Dados públicos brasileirosOpenData-BR, [Captando] Dados públicos brasileiros
OpenData-BR, [Captando] Dados públicos brasileiros
 
Scraping by examples
Scraping by examplesScraping by examples
Scraping by examples
 
R ou Python para análise de dados
R ou Python para análise de dadosR ou Python para análise de dados
R ou Python para análise de dados
 
O que é Data Science?
O que é Data Science?O que é Data Science?
O que é Data Science?
 
Open datasets
Open datasetsOpen datasets
Open datasets
 
Novas ferramentas Python para Análise de Dados
Novas ferramentas Python para Análise de DadosNovas ferramentas Python para Análise de Dados
Novas ferramentas Python para Análise de Dados
 
Scraping for fun and glory
Scraping for fun and gloryScraping for fun and glory
Scraping for fun and glory
 
Java Web Scraping
Java Web ScrapingJava Web Scraping
Java Web Scraping
 
Web scraping
Web scrapingWeb scraping
Web scraping
 
Web crawler
Web crawlerWeb crawler
Web crawler
 
Desbravando o mundo dos webcrawlers
Desbravando o mundo dos webcrawlersDesbravando o mundo dos webcrawlers
Desbravando o mundo dos webcrawlers
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciência
 
Python + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certoPython + Delphi: Um relacionamento que está dando certo
Python + Delphi: Um relacionamento que está dando certo
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com Python
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
6 DICAS PARA VOCÊ MELHORAR SUAS APRESENTAÇÕES
6 DICAS PARA VOCÊ MELHORAR SUAS APRESENTAÇÕES6 DICAS PARA VOCÊ MELHORAR SUAS APRESENTAÇÕES
6 DICAS PARA VOCÊ MELHORAR SUAS APRESENTAÇÕES
 

Semelhante a Scraping

Aprendizado de Máquina e Grandes Conjuntos de Dados
Aprendizado de Máquina e Grandes Conjuntos de DadosAprendizado de Máquina e Grandes Conjuntos de Dados
Aprendizado de Máquina e Grandes Conjuntos de DadosThomas Buck
 
Raspagem de Dados com Python
Raspagem de Dados com PythonRaspagem de Dados com Python
Raspagem de Dados com PythonThiago Curvelo
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...Gleicon Moraes
 
Lean para potencializar a qualidade no software
Lean para potencializar a qualidade no softwareLean para potencializar a qualidade no software
Lean para potencializar a qualidade no softwareDionatan default
 
Matemática em Gráficos: A Mágica da Geração Procedural
Matemática em Gráficos: A Mágica da Geração ProceduralMatemática em Gráficos: A Mágica da Geração Procedural
Matemática em Gráficos: A Mágica da Geração ProceduralAdriano Gil
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Leandro Silva
 
Criando o mvp (minimum viable product)
Criando o mvp (minimum viable product)Criando o mvp (minimum viable product)
Criando o mvp (minimum viable product)Daniel Campos
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Criando software para o futuro com DDD, Arquitetura, Patterns, e Atitude
Criando software para o futuro com DDD, Arquitetura, Patterns, e AtitudeCriando software para o futuro com DDD, Arquitetura, Patterns, e Atitude
Criando software para o futuro com DDD, Arquitetura, Patterns, e AtitudePablo Dall'Oglio
 
Adoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da ParaíbaAdoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da ParaíbaThiago Curvelo
 
Lógica de Programação - Fluxograma
Lógica de Programação - FluxogramaLógica de Programação - Fluxograma
Lógica de Programação - FluxogramaWesley R. Bezerra
 
Introdução a Python e Django
Introdução a Python e DjangoIntrodução a Python e Django
Introdução a Python e Djangoledsifes
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo RealLeandro Silva
 

Semelhante a Scraping (15)

Aprendizado de Máquina e Grandes Conjuntos de Dados
Aprendizado de Máquina e Grandes Conjuntos de DadosAprendizado de Máquina e Grandes Conjuntos de Dados
Aprendizado de Máquina e Grandes Conjuntos de Dados
 
Raspagem de Dados com Python
Raspagem de Dados com PythonRaspagem de Dados com Python
Raspagem de Dados com Python
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
 
Lean para potencializar a qualidade no software
Lean para potencializar a qualidade no softwareLean para potencializar a qualidade no software
Lean para potencializar a qualidade no software
 
Matemática em Gráficos: A Mágica da Geração Procedural
Matemática em Gráficos: A Mágica da Geração ProceduralMatemática em Gráficos: A Mágica da Geração Procedural
Matemática em Gráficos: A Mágica da Geração Procedural
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012
 
Criando o mvp (minimum viable product)
Criando o mvp (minimum viable product)Criando o mvp (minimum viable product)
Criando o mvp (minimum viable product)
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Criando software para o futuro com DDD, Arquitetura, Patterns, e Atitude
Criando software para o futuro com DDD, Arquitetura, Patterns, e AtitudeCriando software para o futuro com DDD, Arquitetura, Patterns, e Atitude
Criando software para o futuro com DDD, Arquitetura, Patterns, e Atitude
 
Adoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da ParaíbaAdoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da Paraíba
 
Lógica de Programação - Fluxograma
Lógica de Programação - FluxogramaLógica de Programação - Fluxograma
Lógica de Programação - Fluxograma
 
Introdução a Python e Django
Introdução a Python e DjangoIntrodução a Python e Django
Introdução a Python e Django
 
#{GCODE}
#{GCODE}#{GCODE}
#{GCODE}
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
 

Scraping

  • 1. Scraping Vítor Baptista vitor@vitorbaptista.com
  • 3. Websites ● Requer envio de algum formulário? ● Requer login? ● Funciona sem JavaScript?
  • 7. Acessando elementos específicos ● CSS Selectors (HTML) – .classe-css – #id-elemento – div#body ● XPath (XML) – //table/td/tr
  • 8. Ferramentas ● ScraperWiki ● ScrapingHub ● Mechanize (Python, Ruby, ...) ● Scrapy (Python) ● Ghost (Python, para sites que requerem JavaScript)
  • 9. PDFs ● Se você consegue selecionar texto do PDF, ou seja, o PDF foi gerado por um programa qualquer, e não é simplesmente um documento escaneado, você está com sorte. ● Se não, as técnicas são as mesmas pra quebrar CAPTCHA (vou falar a seguir)
  • 10. Ferramentas ● Pdftables ● Tabula ● ScraperWiki ● pdftohtml
  • 11. CAPTCHAS ● Existem para evitar que pessoas automatizem o acesso a websites, seja para raspagem ou para criar contas ● Para quebrar um CAPTCHA, primeiro baixamos um grande número de imagens, as resolvemos manualmente e usamos esse conjunto para treinar a ferramenta escolhida
  • 12. Limpeza de ruído ● ImageMagick
  • 13. Ferramentas ● GOCR ● Tesseract ● DeathByCaptcha
  • 14. GOCR ● Simples de usar ● Funciona em CAPTCHAs mais simples
  • 15. Tesseract ● É a ferramenta livre mais poderosa ● Desenvolvida desde 1985 inicialmente pela HP, depois pelo Google ● Difícil de usar
  • 16. E se eu não conseguir quebrar o CAPTCHA?
  • 17. Death By Captcha ● Uma das empresas que vende serviço de “quebra” de CAPTCHAs ● Você envia a imagem do CAPTCHA e eles te devolvem a solução ● São pessoas em algum lugar cujo trabalho é quebrar CAPTCHAS ● US$ 1,39 por 1.000 CAPTCHAs (e você não paga pelos errados)
  • 18. Etiqueta de crawling ● Limite sua velocidade (normalmente uso 1 requisição por segundo) ● Adicione uma forma de contato ao seu User- Agent