Crawleando o incrawleável

Pai

Desenvolvedor "Full Stack"/Mobile

GDG FSA Organizer

freelancer full time

Pythonista

Mas é o JS quem paga "os boleto" 😒

Analisar as minhas compras do mercado nos últimos meses

<input/> 🤦🏽‍♂️

🤯

Skills vs Tempo

1a
Tentativa

🤯

<input/> 🤦🏽‍♂️

2a
Tentativa

Headless Browser

PhantomJS

Headless Browser

Headless Browser

No GUI

Headless Browser

PhantomJS

2a tentativa

Phantomjs como ferramenta.

Python + Splinter

Phantomjs: ~4s de startup

PhantomJS

2a tentativa

~20s

PhantomJS

2a tentativa

A implementação importa!

Sequencial?

DOM é lerdo

Use memória

Python 3?

E o PhantomJS também! 😅

3a
Tentativa

Pacote Node.js com uma API de alto nível

Controla um headless Chrome ou Chromium

Código aberto

Screenshots

Automatizar submissão de forms

Gerar PDFs

Ambiente de Testes

Server Side Rendering (SSR)

npm i puppeteer

npm i puppeteer-core

https://try-puppeteer.appspot.com

3a tentativa

Puppeteer + Chrome

Vanila JS

Headless Chrome: <1s de startup

3a tentativa

~15s

Várias tentativas depois...

Início quase imediato do Chrome

Esperar, você deve.

Async/Await all the things

A ordem dos itens não importa

A ordem das informações dos itens não importa

PhantomJS

~20s

~6s

QUEM LIGA PARA ROBOTS.TXT?

DELAY É PARA OS FRACOS!

SE NÃO DEIXAR O CONTATO 

NINGUÉM TE PEGA

Crawleando o incrawleável

(JSDay 2018) Crawleando o incrawleável com Puppeteer

By Matheus Cardoso

(JSDay 2018) Crawleando o incrawleável com Puppeteer

  • 160