A apresentação introduz o framework Scrapy para construir web crawlers em Python. Ela discute os principais componentes do Scrapy, incluindo Item para modelar dados, Request para fazer requisições, Spider para executar o crawler, e HtmlXPathSelector para selecionar partes da página. A apresentação também menciona outros recursos úteis do Scrapy como Item Pipeline, Scrapy Shell, Feed Exports e integração com Django.
5. 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
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
9. 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
10. Web crawling em Python
● Tecnologias comuns:
● urllib, httplib2, requests
11. Web crawling em Python
● Tecnologias comuns:
● urllib, httplib2, requests
● beautifulsoup ou lxml
12. Web crawling em Python
● Tecnologias comuns:
● urllib, httplib2, requests
● beautifulsoup ou lxml
● json, pickle, yaml, sqlite3
14. 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
19. Item
● Objeto Python que herda da classe
scrapy.item.Item que é dict-like
20. 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
21. 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)
33. scrapy.select.HtmlXPathSelector
● BeautifulSoup: objeto Python baseado na
estrutura do documento
● Lxml: API baseada no ElementTree
● HtmlXPathSelector: Xpath!
34. 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)