35
Capturando a Web com Scrapy Gabriel Freitas

Capturando a web com Scrapy

Embed Size (px)

Citation preview

Page 1: Capturando a web com Scrapy

Capturando  a  Web  com  Scrapy  

Gabriel  Freitas  

Page 2: Capturando a web com Scrapy

O  que  é  um  web  crawler?    

Page 3: Capturando a web com Scrapy

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    

Page 4: Capturando a web com Scrapy

Pra  que  serve?  

Page 5: Capturando a web com Scrapy

Pra  que  serve?  

Page 6: Capturando a web com Scrapy

Estrutura  básica  de  um  web  crawler  

Page 7: Capturando a web com Scrapy

Estrutura  básica  de  um  web  crawler  

•  Construção  de  requisições  HTTP    

Page 8: Capturando a web com Scrapy

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    

Page 9: Capturando a web com Scrapy

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    

Page 10: Capturando a web com Scrapy

Crawleando  em  Python  

•  Tecnologias  comuns:  

Page 11: Capturando a web com Scrapy

Crawleando  em  Python  

•  Tecnologias  comuns:  – urllib,  hEplib2,  requests    

Page 12: Capturando a web com Scrapy

Crawleando  em  Python  

•  Tecnologias  comuns:  – urllib,  hEplib2,  requests  – beauAfulsoup  ou  lxml  

Page 13: Capturando a web com Scrapy

Crawleando  em  Python  

•  Tecnologias  comuns:  – urllib,  hEplib2,  requests  – beauAfulsoup  ou  lxml  –  json,  mysql,  xml,  csv,  sqlite,  etc.  

Page 14: Capturando a web com Scrapy

Mas  qual  o  problema?    

Page 15: Capturando a web com Scrapy

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..  

Page 16: Capturando a web com Scrapy

Solução?  

Page 17: Capturando a web com Scrapy

Solução?  

Page 18: Capturando a web com Scrapy

Instalando…  

•  $  pip  install  Scrapy  

Page 19: Capturando a web com Scrapy

Escolhendo  o  alvo..  

Page 20: Capturando a web com Scrapy

Criando  o  projeto  

•  $  scrapy  startproject  <nome  projeto>  

Page 21: Capturando a web com Scrapy

Localizando  os  dados  

Page 22: Capturando a web com Scrapy

Localizando  os  dados  

•  hEp://www.ufc.com/fighter  

Page 23: Capturando a web com Scrapy

hEp://www.ufc.com/fighter/ronda-­‐Rousey  

Page 24: Capturando a web com Scrapy

hEp://www.ufc.com/fighter/ronda-­‐Rousey  

Page 25: Capturando a web com Scrapy

Definindo  os  itens  

•  Itens  são  os  campos  que  você  irá  pegar  

Page 26: Capturando a web com Scrapy

Definindo  os  itens  

Page 27: Capturando a web com Scrapy

IdenAficando  os  Xpaths  

Page 28: Capturando a web com Scrapy

Testando  Xpaths  

•  $  scrapy  shell  hEp://www.ufc.com/fighter/ronda-­‐Rousey  – $  sel.xpath('//div[@id="fighter-­‐breadcrumb"]/span/h1/text()').extract()  

–  [u'Ronda  Rousey']  

Page 29: Capturando a web com Scrapy

Gerando  o  Spider  

•  $  scrapy  genspider  ufc  hEp://ufc.com  

Page 30: Capturando a web com Scrapy

Gerando  o  Spider  

•  $  scrapy  genspider  ufc  hEp://ufc.com  •  Tipos  de  Spiders:  – basic  – crawl  – csvfeed  – xmlfeed  

Page 31: Capturando a web com Scrapy

Definindo  Xpaths  no  Spider  

Page 32: Capturando a web com Scrapy

Executando  o  crawler  

•  $  scrapy  crawl  ufc  

Page 33: Capturando a web com Scrapy

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  

Page 34: Capturando a web com Scrapy

Obrigado!  

•  Contatos  – [email protected]  – r.com/gabrielfreitas07  

Page 35: Capturando a web com Scrapy

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