Web Scraping com Python

Olá, pessoal. Neste artigo falarei sobre Web Scraping e criarei um exemplo utilizando Python em conjunto com as bibliotecas Requests e BeautifulSoup. Ao final deste artigo, você será capaz de extrair dados de páginas web estáticas e dinâmicas.  

Existem diversas maneiras de se extrair dados da web. A utilização de APIs talvez seja a melhor forma de realizar esse processo mas, e quando o site não fornece esse tipo de recurso, o que fazer? Ai que o Web Scraping entra em “cena”. 

 

O que é Web Scraping? 

Essa é uma técnica utilizada para “minerar” dados de web sites, extraindo deles dados relevantes para um determinado assunto, que posteriormente poderá ajudar nas tomadas de decisões. É possível realizar o mesmo processo de maneira manual, mas isso poderia levar muito tempo. Quando se fala sobre Web Scraping a ideia é automatizar a coleta dos dados e transformá-los em uma estrutura legível para se analisar, sendo possível coletar uma grande massa de dados em uma curta fração de tempo. 

 

Benefícios da Scraping 

  1. Obter dados de fontes mais precisas: imagine que você é um empreendedor que deseja saber mais sobre seus concorrentes.  Seria uma boa tática poder analisar os dados deles, certo? Usando Web Scraping (Raspagem da Web) você pode conseguir essas informações e obter insights precisos; 
  2. Economizar tempo: com a automatização do processo de Raspagem você ganha tempo realizando o mesmo trabalho que levaria muitas horas e talvez dias para realizar manualmente; 
  3. Novas ideias: com novos dados em mãos, novas análises surgem, descobertas e, consequentemente, ideias. O que antes era desconhecido, após ser estruturado e analisado pode se transformar em um negócio, uma campanha de marketing, entre outros; 
  4. Validar uma ideia de projeto: ao iniciar um projeto, você já se perguntou se aquela ideia era mesmo boa? Com os dados certos em mãos, você terá mais convicção, entendendo se é ou não viável a continuação. 

Existem vários ganhos com a Raspagem da Web, esses são apenas alguns que considero importantes. 

Agora que você já sabe o que é Web Scraping e alguns de seus benefícios, vamos colocar a mão na massa e criar o nosso próprio “robô minerador”. Utilizarei Tags HTML para navegar e encontrar os dados necessários, considerando que você tenha conhecimento em HTML. 

 

Bibliotecas Utilizadas 

  • Requests: biblioteca utilizada para execuções de requisições HTTP; 
  • BeautifulSoup: biblioteca para conversão e extração de dados em arquivo HTML e XML. 

As bibliotecas listadas acima serão utilizadas em conjunto, mas cada uma com sua função específica. A Request será utilizada para fazer a requisição e receber o objeto de retorno (Respose). Já a BeautifulSoup, terá o papel de converter o retorno no formato HTML mais legível e realizar a extração dos dados. O site a ser raspado será o elivros.love, que fornece livros digitais de forma gratuita com o intuito de democratizar o acesso à leitura. No site, navegamos até a categoria de livros de aventuras que é o nosso alvo, depois coletaremos as seguintes informações: 

  • Título do Livro; 
  • Link para a página específica do livro. 

Para fins de estudos, buscaremos somente essas informações, mas você será capaz de fazer muito mais.

 

Ambiente de Desenvolvimento 

Para desenvolver nosso “robô raspador” eu utilizei a IDE PyCharm mas, você pode usar seu editor preferido. 

Primeiro, temos que criar nosso projeto e instalar as bibliotecas. Nosso projeto terá o nome de aranha_lelivros. Após ser devidamente criado, é a hora de instalar as bibliotecas e, para quem nunca realizou esse processo, deixo os links das documentações. 

Com nosso ambiente configurado vamos partir para o desenvolvimento.

Dentro do projeto, crie um arquivo chamado aranha.py e importe as bibliotecas. 

#1 Primeiro vamos identificar onde estão as informações que queremos dentro do HTML da página, para isso vamos usar a ferramenta de inspecionar do seu navegador, no meu caso será o Google Chrome. Ao inspecionar a página, notamos que os livros ficam dentro de um elemento HTML que possuiu uma tag ul com o atributo class=”prot

Agora que encontramos a box de livros, temos que encontrar onde está o título e o link que leva a página específica do exemplar. Indo mais a fundo no HTML vimos que dentro da tag ul temos outro elemento o:  <li class=”post-17105 product type-product status-publish has-post-thumbnail hentry first instock”>, que por sua vez contém dentro dele outro elemento o: <a>, que contém nele o atributo href que armazena o link da página do livro, que é exatamente o que queremos. Dentro da tag: <a>, tem mais duas tags, <img> e <h3>, que contém nosso outro valor procurado, o título do livro.

 

#2 Com o caminho dos dados mapeados, vamos para o nosso arquivo aranha.py. Escreveremos os seguintes códigos:

Conseguimos obter o HTML da página e converter para um objeto BeautifulSoup.

 

#3 Nesse terceiro passo, vamos navegar entre os elementos HTML e encontrar nossos dados e extraí-los. O código fica assim: 

Ao ser executado gera a seguinte saída. 

 

#4 Para melhor estruturação dos dados, criaremos um objeto dicionário e, em seguida, salvaremos em um arquivo chamado dados_livros.json.

Terá a seguinte saída.

 

Conclusão 

Com apenas alguns passos fomos capazes de extrair e armazenar dados de um website que não possui uma API para consumo de dados. Esse foi apenas um exemplo simples do que se pode fazer com a técnica de Web Scraping, que é versátil e poderosa. Enfim, agora você sabe o que é e como implementar um “robô raspador de dados”. No exemplo extraímos dados apenas da primeira página, deixo como desafio a você fazer a extração das demais páginas. 

 

*“As opiniões aqui colocadas refletem a minha opinião pessoal e não necessariamente a opinião da Compass UOL.” 

Gostou da solução? Nós podemos ajudar!

Conheça nossos conteúdos gratuitos, direcionados aos assuntos de sua preferência!

Enviar

Receba nosso conteúdo

Gostaria de receber de forma gratuita mais conteúdos sobre este ou outros assuntos? Preencha o formulário abaixo e receba nosso conteúdo gratuito!

Parabéns!

Você receberá nosso conteúdo em breve!

Atenção

Tivemos um problema com seu formulário, tente novamente.