Slide 1

Slide 1 text

Web Scraping com Python

Slide 2

Slide 2 text

Olá! Eu sou a Ana Carolina Software Engineer no Glassdoor Fatecana about.me/anacls 2

Slide 3

Slide 3 text

1. Introdução Quando se fala em Web Scraping, no que você pensa? 3

Slide 4

Slide 4 text

2. Web Scraping 4

Slide 5

Slide 5 text

“ Web scraping é a prática de coletar dados por qualquer meio que não seja um programa interagindo com uma API (ou, obviamente, através de um ser humano usando um navegador da web). - Ryan Mitchell 5

Slide 6

Slide 6 text

◍ Técnica de extração ◍ Facilita a análise de dados ◍ Permite alcançar informação mais limpa 2. Web Scraping 6

Slide 7

Slide 7 text

3. Para que serve? 7

Slide 8

Slide 8 text

◍ Criar fontes de dados estruturadas ◍ Agilizar e facilitar a manipulação das informações ◍ Percorrer páginas com mais rapidez 3. Para que serve? 8

Slide 9

Slide 9 text

◍ Construir soluções para diversas áreas ◌ Ex: Marketing ◌ Geração de Leads ◌ Inteligência de Mercado 3. Para que serve? 9

Slide 10

Slide 10 text

4. Construindo um Scraper 10

Slide 11

Slide 11 text

◍ É possível fazer raspagem de dados com diversas linguagens de programação ◍ Python tem sido a mais utilizada (e é a mais simples) 4. Construindo um Scraper 11

Slide 12

Slide 12 text

◍ Ferramentas: ◌ BeautifulSoup ◌ Scrapy 4. Construindo um Scraper 12

Slide 13

Slide 13 text

4.1 BeautifulSoup 13 “Linda sopa tão rica e verde, Esperando em uma sopeira quente”

Slide 14

Slide 14 text

◍ Biblioteca Python (https://www.crummy.com/so ftware/BeautifulSoup/bs4/d oc/) ◍ Possui métodos que permitem fazer extração de dados de forma simples 4.1 BeautifulSoup 14

Slide 15

Slide 15 text

VAMOS CODAR! 15

Slide 16

Slide 16 text

Instalar BeautifulSoup 16 pip install beautifulsoup4 Pré-requisito:

Slide 17

Slide 17 text

Incêndios na Amazônia Conferindo informações 17 ◍ Recentemente uma publicação divulgada nas redes sociais dizia que o número de focos de queimadas na Amazônia em 2019 é o menor desde 1998. ◍ Essa informação foi verificada pelo Aos Fatos e é FALSA

Slide 18

Slide 18 text

18 ◍ A tabela com as estatísticas por estado/região/bioma pode ser acessada neste link: http://queimadas.dgi.inpe.br/queimadas/portal-stat ic/estatisticas_estados/ Incêndios na Amazônia Conferindo informações

Slide 19

Slide 19 text

19 INSPECIONANDO ELEMENTOS

Slide 20

Slide 20 text

20 ◍ Para encontrar os elementos na página usamos a ferramenta inspecionar do navegador ◍ Depois de filtrar por Amazônia, com a ferramenta de inspecionar selecionamos a tabela que queremos

Slide 21

Slide 21 text

21

Slide 22

Slide 22 text

22 ◍ Se olharmos com cuidado veremos que essa tabela está dentro de um iframe

Slide 23

Slide 23 text

23 ◍ E esse iframe possui um link: ../estado/grafico_historico_estado_sao_paulo.html?_=08281911 ◍ Ao seguir esse link conseguimos chegar numa página mais limpa, contendo apenas a tabela. http://queimadas.dgi.inpe.br/queimadas/portal-static/bioma/gra fico_historico_estado_amazonia.html?_=08281906 ◍ É dessa página que começaremos a raspagem

Slide 24

Slide 24 text

24 ◍ Vamos conferir? ◌ https://colab.research.google.com/dri ve/1w4n-tKgSSUpgkATFO0MiW6Iw_CHLWMu0 Incêndios na Amazônia Conferindo informações

Slide 25

Slide 25 text

4.2 Scrapy 25

Slide 26

Slide 26 text

◍ Scrapy é um framework Python (https://docs.scrapy.org/en/latest/) ◍ Scraping e crawling ◍ Capaz de resolver problemas maiores sem exigir muito esforço 4.2 Scrapy 26

Slide 27

Slide 27 text

4.2.1 Web Crawling 27

Slide 28

Slide 28 text

◍ Extrair links das páginas e indexar e/ou seguir ◍ Web Crawlers ◌ "Robôs" (bots ou spiders) ◌ Ex: Googlebot 4.2.1 Web Crawling 28

Slide 29

Slide 29 text

4.2.1 Web Crawling 29 3. Acessa o link 1. Armazena o conteúdo 2. Mapeia os links Crawling

Slide 30

Slide 30 text

VAMOS CODAR! 30 Código disponível no GitHub

Slide 31

Slide 31 text

Instalar Scrapy 31 pip install scrapy Pré-requisito:

Slide 32

Slide 32 text

Iniciar um projeto scrapy 32 scrapy startproject Executar spider Comandos importantes: scrapy crawl

Slide 33

Slide 33 text

33 ◍ Mapeamento de notícias políticas envolvendo os incêndios do Brasil no El País. ◌ https://brasil.elpais.com/tag/incendios/a Incêndios na Amazônia O que os jornais estão dizendo?

Slide 34

Slide 34 text

34

Slide 35

Slide 35 text

35 ◍ Consulta dos nós da página xpath

Slide 36

Slide 36 text

36

Slide 37

Slide 37 text

37 //article[contains(@id, "brasil-politica")] path atual

Slide 38

Slide 38 text

38

Slide 39

Slide 39 text

39 //article[contains(@id, "brasil-politica")] //div path atual

Slide 40

Slide 40 text

40

Slide 41

Slide 41 text

41 //article[contains(@id, "brasil-politica")] //div //h2 path atual

Slide 42

Slide 42 text

42

Slide 43

Slide 43 text

43 //article[contains(@id, "brasil-politica")] //div //h2 //a path atual

Slide 44

Slide 44 text

44

Slide 45

Slide 45 text

45

Slide 46

Slide 46 text

4.2.2 Lidando com JavaScript 46

Slide 47

Slide 47 text

◍ Splash (https://github.com/scrapinghub/splash) ◌ Scrapy Splash (https://github.com/scrapy-plugins/scrapy-splash) ◌ Suporta scripts Lua 4.2.2 Lidando com JavaScript 47

Slide 48

Slide 48 text

◍ Para saber mais: ◌ https://blog.scrapinghub.com/2015/03/02/handling-javascr ipt-in-scrapy-with-splash 4.2.2 Lidando com JavaScript 48

Slide 49

Slide 49 text

49 4.2.3 Gerenciamento dos dados na nuvem

Slide 50

Slide 50 text

◍ Scrapinghub (https://scrapinghub.com/) ◌ Data on Demand ◌ Scrapy Cloud ◌ Scrapy Cloud API 4.2.3 Gerenciamento dos dados na nuvem 50

Slide 51

Slide 51 text

5. Acesso à informação 51

Slide 52

Slide 52 text

5. Acesso à informação 52 Colaboradados Brasil IO Operação Serenata de Amor

Slide 53

Slide 53 text

6. Referências 53

Slide 54

Slide 54 text

◍ Web Scraping com Python: Coletando Dados na Web Moderna ◍ Número de focos de queimadas na Amazônia em 2019 não é o menor desde 1998. ◍ Programa Queimadas ◍ Documentação BeautifulSoup ◍ Site Oficial Scrapy ◍ Documentação Scrapy ◍ splash ◍ scrapy-splash ◍ A linguagem de programação Lua ◍ Handling Javascript in Scrapy with Splash 6. Referências 54

Slide 55

Slide 55 text

◍ Acesso à Informação ◍ Colaboradados ◍ Brasil IO ◍ Operação Serenata de Amor ◍ Github do Marco Tulio Pires ◍ Repositório de treinamento do Masanori ◍ Learn Scrapy ◍ Blog Scrapinghub 6. Referências 55

Slide 56

Slide 56 text

Obrigada! Dúvidas? 56 @anaclpss [email protected] @anacls