Introdução a Web Scraping com Python

Neste artigo nós iremos fazer uma introdução ao web scraping com Python, utilizando o pacote BeautifulSoup.

Web scraping tem sido um tópico em alta nos últimos tempos, e por nós vamos aprender o que é, porque fazer, e como fazer através da nossa amada linguagem Python.

O que é Web Scraping

Web scraping é uma variação do data scraping. Ela nada mais é do que a técnica de extrair dados da internet.

Mas porque alguém iria querer extrair dados de um website?

Bem, estamos em uma época que informação vale mais do que ouro, e adivinha o que tem na internet? Informação!




Normalmente, esta ação é realizada por bots, ou programas automatizados que rastreiam os sites alvo, e ficam obtendo as informações divulgadas mais atuais.

web scraping com python - web scraper meme

Por que fazer Web Scraping

Muitas pessoas tem duvidas em porque alguém iria fazer raspagem de dados de outros sites.

Bem, imagine que você tem uma loja de carros online.

Não seria interessante ter a lista de preços da concorrência disponível para consulta?




Ou então saber em quanto tempo um anuncio de carro do seu concorrente sai do ar, o que provavelmente significaria que o carro foi vendido.

Aliás, como você acha que o Google sabe tudo? Sabe quais sites são relevantes, a quantidade de links apontado para eles, etc?

Como fazer Web Scraping com Python?

Scrapy Logo

Bem, é possível realizar web scraping com praticamente qualquer linguagem!

Não é necessário nenhum tipo de framework, ou ferramenta específica, apesar de que quanto mais especializadas as ferramentas, mais fácil será a sua tarefa!




Você pode utilizar simples ferramentas para lidar com requisições http, como por exemplo a biblioteca urllib3, ou o requests.

beautifulsoup logo

Para trabalhar com xml, html, etc., existem ferramentas como o lxml e o BeautifulSoup.

Uma outra alternativa, é utilizar o scrapy, que é uma ferramenta especializada e muito poderosa para fazer web crawling.

O que é o Beautiful Soup?

xml

Essa parte é bem simples!

O Beautiful Soup é um pacote para Python que tem como intuito a extração de dados de documentos XML e HTML, de maneira idiomática / pythonica.

É possível trabalhar com diversos parsers por de baixo dos panos, sendo eles:

  • Python html.parser
  • lxml HTML parser
  • lxml XML parser
  • html5lib

Para utilizar o Beautiful Soup, basta utilizarmos o pip:


Agora vamos dar uma conferida no exemplo disponibilizado no próprio site do Beautiful Soup:


Legal, você não acha?!

Bom, vamos para o nosso projeto então!

Preparando o Ambiente

Primeiramente, vamos utilizar o virtualenv para criar o nosso ambiente de desenvolvimento para trabalhar com web scraping com Python:


Agora precisamos instalar as nossas dependências:


E agora, só falta criar o arquivo para o nosso exemplo!

Web Scraping com Python e BeautifulSoup 4

Agora vamos começar o nosso projeto de fato.

Se por acaso você quiser utilizar o código fonte deste artigo, ele está disponível no github.

Obtendo os Dados do Site com o Requests

requests logo

Antes de analisarmos as informações de um site, é preciso primeiramente que peguemos tais informações.

Para isso, nós utilizaremos o pacote requests.


No código acima, nós importamos o pacote requests , e realizamos uma requisição GET  para o meu blog.

Sim, para evitar qualquer tipo de problemas, nós iremos utilizar como exemplo o meu próprio blog.

Analisando os dados do Site com o Beautiful Soup 4

data mining

Agora que já temos o conteúdo do nosso site, vamos ver o que podemos fazer com o Beautiful Soup.


No código acima, nós adicionamos o import do Beautiful Soup, e carremos o conteúdo do meu site, que está disponível através da propriedade content do requests .

O segundo parâmetro informado para o Beatiful Soup é o parser que iremos utilizar.

Para este artigo, nós utilizaremos o parser html.parser .

Ao rodar o código acima, você verá todo o conteúdo disponibilizado pelo meu site, o html, todos os arquivos de css e javascript, etc.

A função prettify  serve para deixar o HTML  organizado para que possamos analisá-lo melhor.

Bom, até agora nós completamos a tarefa mais fácil ao trabalharmos com web scraping com Python. Que foi justamente obter os dados.

Agora vamos brincar um pouco e analisar a estrutura do HTML retornado, para que possamos planejar a nossa estratégia.

Extraindo dados com o Beautiful Soup

Agora chegou a parte divertida. Vamos começar extrair informações do site que capturamos (no caso, este mesmo que você está lendo! =D)

Nós conseguimos acessar diretamente alguns elementos sem grandes dificuldades, como por exemplo, o título do site:


O veremos o resultado abaixo:


Para extrair o conteúdo do título, basta utilizarmos a propriedade string:


E como resultado, teremos:

Obtendo informações de Todos os Artigos

dark side of science meme

Agora vamos pegar todos os artigos listados em nosso blog.

Para isso, não há mágica. Nós temos que analisar o html e descobrir os padrões para que possamos extrair o conteúdo.

Neste caso, é possível notar que todos os artigos estão encapsulados no container article  do html.


Nós podemos obter uma lista de um determinado elemento através do método find_all.

E para que possamos obter um determinado elementos, utilizamos simplesmente o find.

Então, depois de analisar a estrutura do html, podemos utilizar o seguinte código para obter a lista de todos os artigos que constam na primeira página do meu blog:

Iterando os Artigos

Agora que já obtemos todos os artigos de nosso blog, o nosso trabalho ficou muito mais tranquilo.

Precisamos apenas iterar na lista de artigos, e obter o restante dos dados através dos métodos find  e/ou find_all.


E teremos um resultado parecido com (depende de quanto você ler este artigo, e de quais estão disponíveis na página inicial do meu blog =D):

Considerações Finais

Trabalhar com Python para fazer web scraping é bem tranquilo né?!

Aliás, é por isso que a linguagem Python está tão popular ultimamente!

Ela é excelente para diversas aplicações, como web crawling, web scraping, data mining, desenvolvimento web, e muito mais!

E ai, gostou de trabalhar com o Beautiful Soup?

Achou bacana aprender um pouco sobre web scraping com Python?

Deixe seu comentário caso queira mais artigos sobre o tema!

Links Importantes e Referências




2 Comments

  1. Isac Moura 18 de dezembro de 2018

Leave a Reply