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

Scrapy para iniciantes

Scrapy para iniciantes

Neste workshop apresentado na Python Sul de 2018, realizada em Florianópolis, executei alguns exemplos de scrap de dados utilizando o framework Scrapy. A ideia do workshop é apresentar as principais aplicações do Scrapy e como começar a utilizar a ferramenta.

Rafael Calixto

April 07, 2018
Tweet

More Decks by Rafael Calixto

Other Decks in Programming

Transcript

  1. Tutorial Python Sul Scrapy para Iniciantes Uma abordagem sobre os

    conceitos envolvidos nas técnicas de Scrapy Rafael Calixto Fontes: Tutorial oficial da página do Scrapy “https://doc.scrapy.org/en/latest/intro/tutorial.html” Tutorial da Python Brasil, Elias Dornelis “http://pythonclub.com.br/material-do-tutorial-web-scraping-na-nuvem.html”
  2. About me • Rafael Calixto • Cientista de Dados na

    Softplan • Entusiasta de Big Data, Ciência de Dados e Cryptomoedas • Projeto de criação de scrapers no IRB em 2017
  3. Scrapy para iniciantes • Porque acessar dados na web utilizando

    scripts automatizados? • Busca automatizada por padrões • Acesso a bases de dados públicas • Mapeamento de sites • Monitoramentos de preços • O que a sua imaginação permitir...
  4. Definição • Scraping: Técnica de extração de dados da web

    automatizada por meio de scripts • Crawler: Script com a finalidade de encontrar novos sites buscando links nos sites acessados. • Spider: Nome dados ao robô que reúne as funções de Scraping e Crawler.
  5. Um pouco de teoria primeiro • Antes de falarmos de

    Scrapy, vamos ver como seria fazer coletar os dados na web sem utilizar este framework. Escreva o seguinte código: Agora vamos tentar com o site “https://pt.wikipedia.org/wiki/Python”
  6. Whats a mess!!! • Abrindo o site no seu Browser

    favorito e pressionando F12 para ver o código fonte da página, é fácil perceber que existem muitos complicadores para executar a extração de dados utilizando apenas as bibliotecas nativas do Python. • Um framework poderia facilitar o nosso trabalho!!! • → Scrapy
  7. Instalação • pip install scrapy • easy_install scrapy • conda

    install -c anaconda scrapy • * pode ocorrer um erro na instalação da biblioteca por problemas de configuração com o compilador c da máquina
  8. Primeiros comandos • Utilizando o prompt/shell de comando, digite: •

    scrapy version • Esta mensagem deverá aparecer para você:
  9. Pegando um gostinho • Podemos executar a extração direto do

    shell, basta executar o comando: • scrapy shell “https://pt.wikipedia.org/wiki/Python” • Esta lista deve aparecer:
  10. Que emoção! • Repare que existe uma lista de objetos

    exibidos pelo prompt/shell e o Python é executado automaticamente. • Chamando a função css do objeto response podemos acessar propriedades da página acessada. • response.css(‘title::text’).extract() • Para estudar as possibilidades do objeto, digite: • help(response)
  11. Xpath, eu escolho você! • Uma das funções do objeto

    response é o xpath que possibilita executar queries no html extraído. É possível entender melhor como funciona o xpath no site da W3schools: • https://www.w3schools.com/xml/xml_xpath.asp • response.xpath(‘//title/text()’).extract()
  12. Criando um projeto • Para nos organizarmos, vamos criar um

    projeto no scrapy. Utilizando o comando abaixo será criado um diretório com uma estrutura que facilitará as nossas atividades de criação de Spiders. Acesse o diretório de sua preferência pelo prompt/shell e digite o seguinte comando: • scrapy startproject “nome do repositório”
  13. Dando uma olhada... • Observe que em seu desktop foi

    criado um diretório com o nome que você passou como parâmetro e dentro deste diretório existem os seguintes itens: • Diretório com o nome do projeto − Diretório __pycache__ − Diretório spiders − __init__.py − Items.py − middlewares.py − pipelines.py − setting.py
  14. Codar é viver... • Vamos criar o nosso primeiro algoritmo

    de scraping de dados. Basicamente ele é um “hello world”. • Vamos começar com este algoritmo básico:
  15. Vamos tentar! • Para executar o script, temos que utilizar

    o seguinte comando: • scrapy runspider “nome_do_arquivo”.py • -s DOWNLOAD_DELAY=1.5 • Mantém o cache na sessão diminuindo a carga de download em novos acessos
  16. Deu tudo certo!!!! • No log de execução do Scrapy

    podemos ver a tentativa de acesso ao site informado e a mensagem passada como parâmetro para a função log do scrapy.Spider
  17. Juntando tudo o que vimos... • Faremos o seguinte script

    para combinar o que vimos até o momento:
  18. Vamos ver o que veio... • Execute o script utilizando

    o comando: • scrapy runspider “nome_do_arquivo.py” -o dados.json • Será gerado um arquivo json no diretório Spiders, vamos utilizar o site https://jsonlint.com para visualizar e validar os dados.
  19. Só mais um... • Vamos executar um último exemplo onde

    iremos listar os vídeos de um canal do youtube.
  20. Olho no lance... • Vocês já sabem o que fazer,

    certo!? • Veremos no arquivo csv que são listados os links, os títulos dos vídeos e a quantidade de views.