Raspagem de Dados com
Python
aka Hello, Scrapy!
Thiago Curvelo
● Estudei no IFPB & UFPB
● Trabalhei no TRT por 12 anos
como "faz-tudo developer"
● Hoje: Crawling Engineer @
Scrapinghub
● tcurvelo
We Are Hiring!
scrapinghub.com/jobs
Web Scraping
O que é?
Extração automatizada dos dados de
páginas da Web, e sua disponibilização
de forma estruturada.
Quando usar?
Quando a informação é pública, mas
não existe uma API
Para que serve?
É core para alguns
negócios:
● comparadores de preço
● intermediadores de compras
● agregadores de emprego
Usado em tomada de
decisão, em outros:
● acompanhar tendências
● monitorar marcas
● vigiar a concorrência
É um troço estratégico!
Mas...isso é legal?
● Seu bot deve ser educado!
● Usar os dados com ética
● Se você aceitar termos e condições, respeite!
Porém, sempre há um conflito de interesse.
Tá mas… como faz?
● um cliente HTTP baixa a página
● um parser encontra o que dado que você quer
● salvar só a informação que interessa
Scrapy
● framework para raspagem de dados
● open source, feito em Python
● poderoso!
○ requisições assíncronas
○ seletores css e xpath
○ vazão adaptativa
● extensível e configurável
○ middlewares, pipelines, extensões, signals
Mas pera,é Scraper ou
Crawler??
Spider!
Anatomia de um
Spider
Demo
Seletores: CSS vs XPath
CSS
h2
div.classe
#item::text
?
XPath
//h2
.//div[@class="classe"]
.//*[@id="item"]/text()
.//*[@id="item"]/../section
Dúvidas comuns
"Eu vejo o elemento
no browser,mas não
consigo pegar pelo
spider"
O browser é mais que um cliente HTTP
● Baixa a página
● Baixa outros recursos (css, imagens, js)
● Executa JavaScript
Inspect Element
!=
View Page Source
"O site que eu quero
tem muito JavaScript.
Não dá pra usar o
Scrapy"
A aba"Network"do browser é sua amiga!
● Procure pela API que o site consome
"Você não tá
entendendo.Tem
JavaScript para
cara...mba!"
Ok...às vezes o esforço não compensa
● Splash
● scrapy-selenium
● chromium headless (pyppeteer), em breve…
"Eu preciso me logar.
#comofaz"
"A ação que fiz na
página anterior,não
está refletindo na
atual.Bagunçou foi
tudo!"
Cookiejar!
"Eu consigo acessar
pelo browser,mas dá
erro pelo spider"
BAN!
● Você tá pegando leve?
○ Ative o autothrottle
● Você tá dando muita bandeira que é um bot?
○ Tente outro user-agent
● Se tudo o mais falhar, use um Proxy
Crawlera
https://scrapinghub.com/crawlera
Links Úteis
● Scrapy
○ https://scrapy.org/
● Tutorial do Scrapy em Vídeo:
○ https://www.youtube.com/watch?v=vkA1cWN4DEc&list=PLZyvi_9gamL-EE3zQJbU5N3nzJcf
NeFHU
● Scrapinghub:
○ Site: https://scrapinghub.com/
○ Jobs: https://scrapinghub.com/jobs
○ Crawlera: https://scrapinghub.com/crawlera
Valeu!
@tcurvelo
curvelo.net

Raspagem de Dados com Python

  • 1.
    Raspagem de Dadoscom Python aka Hello, Scrapy!
  • 2.
    Thiago Curvelo ● Estudeino IFPB & UFPB ● Trabalhei no TRT por 12 anos como "faz-tudo developer" ● Hoje: Crawling Engineer @ Scrapinghub ● tcurvelo
  • 4.
  • 5.
  • 6.
    O que é? Extraçãoautomatizada dos dados de páginas da Web, e sua disponibilização de forma estruturada.
  • 7.
    Quando usar? Quando ainformação é pública, mas não existe uma API
  • 8.
    Para que serve? Écore para alguns negócios: ● comparadores de preço ● intermediadores de compras ● agregadores de emprego Usado em tomada de decisão, em outros: ● acompanhar tendências ● monitorar marcas ● vigiar a concorrência É um troço estratégico!
  • 9.
    Mas...isso é legal? ●Seu bot deve ser educado! ● Usar os dados com ética ● Se você aceitar termos e condições, respeite! Porém, sempre há um conflito de interesse.
  • 10.
    Tá mas… comofaz? ● um cliente HTTP baixa a página ● um parser encontra o que dado que você quer ● salvar só a informação que interessa
  • 11.
    Scrapy ● framework pararaspagem de dados ● open source, feito em Python ● poderoso! ○ requisições assíncronas ○ seletores css e xpath ○ vazão adaptativa ● extensível e configurável ○ middlewares, pipelines, extensões, signals
  • 12.
    Mas pera,é Scraperou Crawler??
  • 13.
  • 14.
  • 16.
  • 19.
    Seletores: CSS vsXPath CSS h2 div.classe #item::text ? XPath //h2 .//div[@class="classe"] .//*[@id="item"]/text() .//*[@id="item"]/../section
  • 20.
  • 21.
    "Eu vejo oelemento no browser,mas não consigo pegar pelo spider"
  • 22.
    O browser émais que um cliente HTTP ● Baixa a página ● Baixa outros recursos (css, imagens, js) ● Executa JavaScript Inspect Element != View Page Source
  • 23.
    "O site queeu quero tem muito JavaScript. Não dá pra usar o Scrapy"
  • 24.
    A aba"Network"do browseré sua amiga! ● Procure pela API que o site consome
  • 25.
  • 26.
    Ok...às vezes oesforço não compensa ● Splash ● scrapy-selenium ● chromium headless (pyppeteer), em breve…
  • 27.
    "Eu preciso melogar. #comofaz"
  • 29.
    "A ação quefiz na página anterior,não está refletindo na atual.Bagunçou foi tudo!"
  • 30.
  • 31.
    "Eu consigo acessar pelobrowser,mas dá erro pelo spider"
  • 32.
    BAN! ● Você tápegando leve? ○ Ative o autothrottle ● Você tá dando muita bandeira que é um bot? ○ Tente outro user-agent ● Se tudo o mais falhar, use um Proxy Crawlera https://scrapinghub.com/crawlera
  • 33.
    Links Úteis ● Scrapy ○https://scrapy.org/ ● Tutorial do Scrapy em Vídeo: ○ https://www.youtube.com/watch?v=vkA1cWN4DEc&list=PLZyvi_9gamL-EE3zQJbU5N3nzJcf NeFHU ● Scrapinghub: ○ Site: https://scrapinghub.com/ ○ Jobs: https://scrapinghub.com/jobs ○ Crawlera: https://scrapinghub.com/crawlera
  • 34.