Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web Scraping com Python - Talk WoMakersCode

Ana Carolina
January 22, 2019
76

Web Scraping com Python - Talk WoMakersCode

Essa talk aborda alguns conceitos sobre Web Scraping e traz alguns exemplos de como podemos utilizar essa técnica com Python.

Ana Carolina

January 22, 2019
Tweet

Transcript

  1. Ana Carolina Software Developer - Love Mondays Formada em Análise

    e Desenvolvimento de Sistemas anacls Contato: https://about.me/anacls
  2. ▹ Técnica de raspagem para websites ▹ Permite alcançar informação

    mais limpa ▹ Percorrer páginas com mais rapidez Web Scraping
  3. ▹ Criar fontes de dados estruturadas ▹ Agiliza e facilita

    a manipulação e análise das informações ▹ Exemplo Love Mondays: ■ Raspa vagas de diversas fontes ■ Realiza tratamento dos dados ■ Disponibiliza todas as vagas num único site Para o que serve?
  4. ▹ É possível fazer scraping usando várias linguagens ▹ Python

    é a linguagem mais utilizada para esse fim ▹ BeautifulSoup e Scrapy são as ferramentas mais conhecidas Como fazer?
  5. ▹ Biblioteca Python (https://www.crummy.com/software/BeautifulSoup/bs4/doc/) ▹ Possui métodos que permitem fazer

    extração de forma simples ▹ Mais voltada para extração de conteúdos html e xml Beautiful Soup
  6. ▹ Framework Python (https://docs.scrapy.org/en/latest/) ▹ Voltado especificamente para scraping e

    crawling ▹ Possui funções mais complexas ▹ Preparado para resolver problemas maiores sem exigir muito esforço Scrapy
  7. <html> <head> <title>Exemplo</title> </head> <body> <div> <p class="first-item" id="first"> “Se

    sentir medo, vai com medo mesmo” </p> </div> </body> </html>
  8. Raspagem de dados com BeautifulSoup Quantidade de mulheres parlamentares no

    mundo em 2017. Fonte: http://wdi.worldbank.org/table/WV.5 Código disponível no GitHub
  9. import urllib from bs4 import BeautifulSoup url = "http://wdi.worldbank.org/table/WV.5" html

    = urllib.urlopen(url) soup = BeautifulSoup(html.read(), 'html.parser') tabela = soup.findAll('table', { 'class': 'indicators-table' })[1]
  10. linhas = tabela.findAll('tr') for linha in linhas: pais = linha.find('td',

    { 'class': 'country' }).text quantidade = linha.findAll('td')[7].text print(pais + ' = ' + quantidade)
  11. import scrapy class Previsao(scrapy.Spider): name = "previsao" start_urls = [

    "https://www.climatempo.com.br/previsao-do-tempo/15-dias/cidade/5 58/saopaulo-sp" ]
  12. def parse(self, response): dias = response.xpath('//div[contains(@id, "resumeDay")]') for dia in

    dias: dia_semana = dia.xpath('.//div[contains(@class, "title")]//p/text()[1]').extract_first().strip() data = dia.xpath('.//div[contains(@class, "title")]//p/text()[2]').extract_first().strip()
  13. def parse(self, response): dias = response.xpath('//div[contains(@id, "resumeDay")]') for dia in

    dias: dia_semana = dia.xpath('.//div[contains(@class, "title")]//p/text()[1]').extract_first().strip() data = dia.xpath('.//div[contains(@class, "title")]//p/text()[2]').extract_first().strip() max_temp = dia.xpath('.//p[contains(@id, "tempMax")]/text()').extract_first() min_temp = dia.xpath('.//p[contains(@id, "tempMin")]/text()').extract_first()
  14. def parse(self, response): dias = response.xpath('//div[contains(@id, "resumeDay")]') for dia in

    dias: dia_semana = dia.xpath('.//div[contains(@class, "title")]//p/text()[1]').extract_first().strip() data = dia.xpath('.//div[contains(@class, "title")]//p/text()[2]').extract_first().strip() max_temp = dia.xpath('.//p[contains(@id, "tempMax")]/text()').extract_first() min_temp = dia.xpath('.//p[contains(@id, "tempMin")]/text()').extract_first() desc = dia.xpath('.//div[contains(@class, "description-block")]//span/text()').extract_first()
  15. print("Dia: " + dia_semana + data) print("Máxima: " + max_temp)

    print("Mínima: " + min_temp) print("Descrição: " + desc) yield{ 'dia_sem': dia_semana, 'data': data, 'max_temp': max_temp, 'min_temp': min_temp, 'desc': desc, }
  16. ▹ Github do Marco Tulio Pires ▹ Repositório de treinamento

    do Masanori ▹ Livro Web Scraping com Python ▹ Site Oficial Scrapy ▹ Documentação Scrapy ▹ Learn Scrapy Referências de Estudo