Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Raspagem de Dados com Python
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Thiago Curvelo
April 27, 2019
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Raspagem de Dados com Python
Introdução à raspagem de dados, com uma demonstração do framework Scrapy.
Thiago Curvelo
April 27, 2019
Other Decks in Programming
See All in Programming
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
1
430
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
1k
sbt 2.0: takeoff
eed3si9n
0
160
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
ジョジョの世界をXRで再現する
mofurune
0
160
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
480
すこし踏み込む CancellationToken
htkym
2
1.7k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
Featured
See All Featured
Test your architecture with Archunit
thirion
2
2.4k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
570
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
370
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
How to Ace a Technical Interview
jacobian
280
24k
Fireside Chat
paigeccino
43
4.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Transcript
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
None
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
None
Demo
None
None
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"
None
"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