Tutorial: Go Spider! Web Scraping com Python e Scrapy

(Schwinn Zhang) (19 de janeiro de 2019)

fonte da imagem: https://myfigurecollection.net/item/736413

Você provavelmente ouviu falar de “web scraping”. Se você não fez isso, web scraping significa usar um algoritmo de computador para obter informações de destino de um site. A biblioteca python Scrapy foi construída exatamente para essa tarefa. A bela sopa é outra opção, mas é LENTA. De qualquer forma, você quer aprender essa habilidade para construir software, para ciência de dados ou para o Kremlin (wink). Existem muitos tutoriais sobre este tópico. “Por onde eu começo?” “Existe um roteiro para isso?” Depois de passar três dias vasculhando informações boas, ruins e desatualizadas, estou aqui para lhe fornecer este roteiro de web scraping.

Por onde começar

Meu plano era seguir os projetos python nesta lista . Se você decidiu começar com o Twitter Mining , então BOA SORTE (sarcasticamente) porque ainda estou esperando no Twitter me conceder acesso à API deles após 5 dias 17 horas e 7 minutos. Então, alerta de pendências! Naturalmente, mudei para o próximo: Raspar um site com Python (e MongoDB) . Coloquei o MongoDB entre colchetes para simplificar. O MongoDB vai custar muito tempo e, para meu pequeno programa, nem é necessário. Eu prefiro fazer um raspador de web python total funcionar e adicionar a funcionalidade MongoDB mais tarde. Gerenciamento de tempo significa cortar os trigs e chegar ao cerne. Software Dev 101. De qualquer forma, siga este artigo Raspe um site com Python (e MongoDB) e você terá uma noção básica de como funciona o web scraping.

XPath vs CSS? Eu escolhi CSS

Então eu fiquei preso em algo chamado XPath, basicamente, uma instrução baseada em URL que indica informações de destino para nosso spider de explorador. Após uma extensa navegação pelo tutorial, encontrei este jogo de comida que ajuda você a aprender e praticar a escrita XPath. Se você ainda teme XPath, há outra maneira, que aquele artigo do tutorial não mencionou…

De Scrapys tutorial em sua documentação, encontrei meu amigo CSS, que tem uma sintaxe simples e direta. Na verdade, a documentação do Scrapy é o MELHOR tutorial. É o mais atualizado, completo e muitos tutoriais de blog são baseados nisso. Neste tutorial, encontrei a melhor maneira de praticar a segmentação de informações da web por meio do shell IPython do Scrapy, basicamente um Notebook Jupyter em seu terminal. Na linha de comando, use

scrapy shell [url entre aspas]

Depois, basta seguir o tutorial Scrapy em quotes.toscrape.com. É um exemplo ideal porque o site é simples, com poucas camadas de CSS incorporado. Depois de algumas rodadas, você já é um Ninja Júnior. Nesse ponto, me senti confiante o suficiente para raspar todas as manchetes da página inicial do New York Times . Veja só, era uma tarefa impossível neste ponto porque a primeira página tem uma quantidade impressionante de incorporação. Bem, a página inicial é apenas uma combinação selecionada de artigos de cada seção, certo? Seguindo essa lógica, fui capaz de ir para a seção Op-Ed mais simples e a seção de Arte para raspar com sucesso todas as manchetes. Este é meu repo no git.

Então, um brinde à minha primeira aranha. Precisarei incluir mais funções e recursos. Mas, por enquanto, funciona. Você pode ver que todos os títulos na página Op-Ed do NYT foram armazenados em um arquivo json aqui. Aqui está uma captura de tela. Você pode encontrar duplicatas aqui. Está certo. Podemos construir um detector duplicado depois. Também pretendo obter informações de várias fontes de notícias e colocar seus resultados no mesmo arquivo.

NYT Resultados do raspador OpEdTitles. Fonte: Schwinn Zhang

Resumo do Algoritmo Spider

Próximas etapas

  1. Depure e / ou adicione funcionalidades ao seu spider
  2. Tente para raspar um conjunto de dados. Este é um bom tutorial: Usando o Scrapy para construir seu próprio conjunto de dados .

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *