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
Python user scraping the web using Beautiful Soup libraries

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

More from Bright Data

Datasets Icon

Get immediately structured data

Access reliable public web data for any use case. The datasets can be downloaded or delivered in a variety of formats. Subscribe to get fresh records of your preferred dataset based on a pre-defined schedule.

Web scraper IDE Icon

Build reliable web scrapers. Fast.

Build scrapers in a cloud environment with code templates and functions that speed up the development. This solution is based on Bright Data's Web Unlocker and proxy infrastructure making it easy to scale and never get blocked.

Web Unlocker Icon

Implement an automated unlocking solution

Boost the unblocking process with fingerprint management, CAPTCHA-solving, and IP rotation. Any scraper, written in any language, can integrate it via a regular proxy interface.

Ready to get started?