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	
  
– gabrielfreitas07@gmail.com	
  
– 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	
  	
  

Capturando a web com Scrapy