SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
4.
O que é um web crawler?
“Web crawler é um
programa de computador
que navega pela World
Wide Web de uma forma
metódica e
automatizada”
http://pt.wikipedia.org/wiki/Web_crawler
6.
Estrutura básica de um web
crawler
● Construção de requisições HTTP
7.
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
8.
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
9.
Web crawling em Python
● Tecnologias comuns:
● urllib, httplib2, requests
10.
Web crawling em Python
● Tecnologias comuns:
● urllib, httplib2, requests
● beautifulsoup ou lxml
11.
Web crawling em Python
● Tecnologias comuns:
● urllib, httplib2, requests
● beautifulsoup ou lxml
● json, pickle, yaml, sqlite3
13.
Mas qual o problema?
● Ter que resolver tudo na mão:
● Se tiver autenticação?
● Lidar com sessão, cookie...
● HTML mal formatado
● Crawlear outros recursos
● Aumento de pontos de falha
● Complexidade de testes
● Encoding
● Mais alguns outros
17.
Item
● Objeto Python que herda da classe
scrapy.item.Item que é dict-like
18.
Item
● Objeto Python que herda da classe
scrapy.item.Item que é dict-like
● ORM-like
● Atributos são instâncias da classe
scrapy.item.Field
19.
Item
● Objeto Python que herda da classe
scrapy.item.Item que é dict-like
● ORM-like
● Atributos são instâncias da classe
scrapy.item.Field
● Consegue separar a “modelagem” e
tratamento dos dados do processamento do
crawler:
● Field(serializer=str)
29.
scrapy.select.HtmlXPathSelector
● BeautifulSoup: objeto Python baseado na
estrutura do documento
30.
scrapy.select.HtmlXPathSelector
● BeautifulSoup: objeto Python baseado na
estrutura do documento
● Lxml: API baseada no ElementTree
31.
scrapy.select.HtmlXPathSelector
● BeautifulSoup: objeto Python baseado na
estrutura do documento
● Lxml: API baseada no ElementTree
● HtmlXPathSelector: Xpath!
32.
scrapy.select.HtmlXPathSelector
● BeautifulSoup: objeto Python baseado na
estrutura do documento
● Lxml: API baseada no ElementTree
● HtmlXPathSelector: Xpath!
● Métodos:
● select(self, xpath)
● extract(self)
● re(self, regex)