Capturando a Web com Scrapy
Gabriel Freitas
O que é um web crawler?
O que é um web crawler?
• “Web crawler é um programa de computador que navega pela World Wide Web de uma forma metódica e automaAzada”hEp://pt.wikipedia.org/wiki/Web_crawler
Pra que serve?
Pra que serve?
Estrutura básica de um web crawler
Estrutura básica de um web crawler
• Construção de requisições HTTP
Estrutura básica de um web crawler
• Construção de requisições HTTP • Tratamento da resposta – Composição de objetos – Composição de novas requisições
Estrutura básica de um web crawler
• Construção de requisições HTTP • Tratamento da resposta – Composição de objetos – Composição de novas requisições
• Persistência de dados
Crawleando em Python
• Tecnologias comuns:
Crawleando em Python
• Tecnologias comuns: – urllib, hEplib2, requests
Crawleando em Python
• Tecnologias comuns: – urllib, hEplib2, requests – beauAfulsoup ou lxml
Crawleando em Python
• Tecnologias comuns: – urllib, hEplib2, requests – beauAfulsoup ou lxml – json, mysql, xml, csv, sqlite, etc.
Mas qual o problema?
Mas qual o problema?
• Ter que resolver tudo na mão: – Se Aver autenAcação? – Trabalhar com sessão, cookie... – HTML mal formatado – Requisições Simultâneas – Aumento de pontos de falha – Etc..
Solução?
Solução?
Instalando…
• $ pip install Scrapy
Escolhendo o alvo..
Criando o projeto
• $ scrapy startproject <nome projeto>
Localizando os dados
Localizando os dados
• hEp://www.ufc.com/fighter
hEp://www.ufc.com/fighter/ronda-‐Rousey
hEp://www.ufc.com/fighter/ronda-‐Rousey
Definindo os itens
• Itens são os campos que você irá pegar
Definindo os itens
IdenAficando os Xpaths
Testando Xpaths
• $ scrapy shell hEp://www.ufc.com/fighter/ronda-‐Rousey – $ sel.xpath('//div[@id="fighter-‐breadcrumb"]/span/h1/text()').extract()
– [u'Ronda Rousey']
Gerando o Spider
• $ scrapy genspider ufc hEp://ufc.com
Gerando o Spider
• $ scrapy genspider ufc hEp://ufc.com • Tipos de Spiders: – basic – crawl – csvfeed – xmlfeed
Definindo Xpaths no Spider
Executando o crawler
• $ scrapy crawl ufc
Exportando os resultados
• Em json – $ scrapy crawl ufc -‐o lutadores.json -‐t json
• Em csv – $ scrapy crawl ufc -‐o lutadores.csv -‐t csv
• Em xml – $ scrapy crawl ufc -‐o lutadores.xml -‐t xml
Obrigado!
• Contatos – [email protected] – r.com/gabrielfreitas07
Referências
• Nataliel Vasconcelos – Python Beach • hEp://pypix.com/python/build-‐website-‐crawler-‐based-‐upon-‐scrapy/
• hEp://www.slideshare.net/previa/scrapyfordummies-‐15277988
• hEp://www.slideshare.net/TheVirendraRajput/web-‐scraping-‐in-‐python
• hEp://www.slideshare.net/obdit/data-‐philly-‐scrapy • hEp://trumae.blogspot.com.br/2014/01/scrapy-‐bem-‐facinho.html