Aprenda a usar Beautiful Soup para raspar a web com Python em 3 minutos

Procura um tutorial rápido para o ajudar a começar a raspar a web usando Beautiful Soup de Python? Veio ao sítio certo! Siga lendo e comece imediatamente.
5 min read
How to Scrape with BeautifulSoup

Neste artigo, iremos discutir:

Como funciona a raspagem da web?

Raspar uma página web significa solicitar dados específicos de uma página web de destino. Quando raspa uma página, o código que escreve envia o seu pedido para o servidor que hospeda a página de destino. O código descarrega depois a página, extraindo apenas os elementos da página definidos inicialmente na tarefa de rastejamento.

Por exemplo, digamos que estamos à procura de dados alvo em etiquetas de títulos H3. Escreveríamos código para um raspador que procurasse especificamente essa informação. O raspador funcionará em três fases:

Passo 1: Enviar um pedido para o servidor para descarregar o conteúdo do sítio.

Passo 2: Filtrar o HTML da página para procurar as etiquetas H3 desejadas.

Passo 3: Copiar o texto dentro das etiquetas de destino, produzindo os resultados no formato previamente especificado no código.

É possível realizar tarefas de raspagem da web em muitas linguagens de programação com diferentes bibliotecas, mas a utilização de Python com a biblioteca Beautiful Soup é um dos métodos mais populares e eficazes. Nas secções seguintes, cobriremos o básico para a raspagem em Python usando Beautiful Soup.

O que é Beautiful Soup?

Beautiful Soup fornece métodos simples de navegação, pesquisa e modificação de uma árvore de parse em ficheiros HTML, XML. Transforma um documento HTML complexo numa árvore de objetos Python. Também converte automaticamente o documento para Unicode, para que não tenha de pensar em codificações. Esta ferramenta não só ajuda a raspar, mas também a limpar os dados. Beautiful Soup suporta o analisador de HTML incluído na biblioteca padrão de Python, mas também suporta vários analisadores de Python de terceiros como lxml ou hml5lib.

Pode saber mais sobre o espetro completo das suas capacidades aqui: Documentação da Beautiful Soup.

Instalação de Requests e Beautiful Soup

Para instalar Beautiful Soup, precisa de pip ou de qualquer outro instalador de Python. Também pode utilizar o seu Jupyter Lab. Nesta publicação, utilizaremos pip, pois é o mais conveniente. Abra o seu terminal ou Jupyter Lab e escreva:
command line syntax for pip install beautifulsoup4 for Beautiful Soup Libraries in Python

Também pode querer instalar um analisador que interprete o HTML, por exemplo, ‘html5lib’. Para o fazer, execute o seguinte código no terminal:
command line for installing html5lib using pip install for Python
Instalação de Requestsscreenshot of syntax for pip install requests for python
Outro método é descarregar as bibliotecas manualmente, seguindo estas ligações:

1: Requests

2: Hml5lib

3: Beautifulsoup4

Passos fáceis para raspar em Python usando Requests e Beautiful Soup

Passo 1: Tem de enviar um pedido HTTP para o servidor da página que pretende raspar. O servidor responde enviando o conteúdo HTML da página web. Uma vez que estamos a utilizar Python para os nossos pedidos, precisamos de uma biblioteca HTTP de terceiros, e iremos utilizar Requests.

Comece por importar a biblioteca de Requests (pedidos) e fazer um simples pedido GET para o URL – escolhemos https://www.brainyquote.com/topics/motivational-quotes porque tem uma estrutura HTML simples e nos permitirá demonstrar facilmente o potencial da Beautiful Soup.
python code to import requests and then scrape a given URLSe obtivermos uma resposta [200], isto basicamente significa que o sítio respondeu com um código de resposta HTTP 200 OK e enviou-nos o conteúdo HTML da página.

Vamos fazer novamente o mesmo pedido, mas desta vez vamos armazenar o resultado numa variável chamada r, e vamos imprimir o seu conteúdo.scraping using requests and saving the URL as a variable called rO resultado deverá ser o código HTML completo para esta página. Como pode ver, a sua Beautiful Soup não estruturada vai ajudar-nos a limpá-la e a obter os dados de que necessitamos.

Passo 2: Agora que temos o conteúdo HTML, precisamos de analisar os dados. Para isso, vamos utilizar Beautiful Soup com um analisador html5lib.Precisamos de passar dois valores para BeautifulSoup():
importing beautiful soup from bs4 - command line syntaxWe need to pass two values into BeautifulSoup():

#1: Cadeia HTML do sítio web; ‘r.content’

#2: Que analisador de HTML usar; ‘html5lib’

Passo 3: Neste momento, quer ir para o sítio que está a raspar. Abra os Devtools (F12), e vá para o separador Elementos. Vamos procurar a camada superior da tabela.
nice chunk of scraped data using beautiful soup

command line syntax for configuring a table in beautiful soup using python

Vamos imprimir a tabela para ter uma melhor ideia do que temos até agora, e vamos usar .prettify()
command line for displaying the table in the console using prettify

A sua produção deve ser algo parecido com isto:

Agora procuramos os dados de que necessitamos. Para este exemplo, tudo o que queremos é o texto citado e o nome do autor. Como pode ver, todos estes dados estão em

Vamos então percorrer todas as instâncias desta classe e obter todas as citações na nossa tabela.
command line for looping through all the data to find the rows you need for the table

Agora só deve ter o

em cada instância de loop disponível para si. Pode testá-lo executando a impressão(fila) no loop.

finding the alt-text inside the scraped data

Procuramos a informação sob a chave “img alt”, por isso vamos criar uma variável de citação e atribuir-lhe estes dados.

assigning data to the alt text

Como pode ver, embrulhei-o numa declaração de tentativa (‘try’). Neste caso, se uma das filas não tiver os dados que procura, não receberá um erro, e o loop continuará a avançar. Também dividi os resultados em ‘-‘. Como viu anteriormente, o texto e o nome do autor são separados usando um ‘-‘ Vamos usar isso para separar os dois e dividi-los.
example of alt-attribute text being filled with the data providedÉ tudo. Está pronto. Aqui está como deve ser agora a sua variável de citação:

 

example of the data after it has applied the alt-text scrape

No final deste processo, pode guardar os seus dados num ficheiro, e o seu código deve ser algo parecido com isto:
Screen shot of the final Python code and how it should look