Salve salve Pythonista!
Hoje, vamos navegar pelo maravilhoso mundo do Web Scraping utilizando a popular biblioteca Python, o BeautifulSoup.
“Mas o que é Web Scraping?” você deve estar se perguntando. Não se preocupe, a Python Academy está aqui para explicar!
Web Scraping é uma importante ferramenta para coletar dados da web.
O mundo está girando em torno de uma quantidade inacreditável de dados e o Web Scraping é uma bússola, nos ajudando a navegar nesse oceano.
Ao longo deste artigo, vamos explorar tudo sobre Web Scraping com Python e BeautifulSoup.
Vamos visitar temas importantes, como Crawler, Parser, o uso de BeautifulSoup, seus principais métodos e finalmente, vamos colocar a mão na massa com um mini projeto!
Vá Direto ao Assunto…
- Crawler e Parser
- BeautifulSoup: Seu Amigo na Coleta de Dados
- Principais métodos de utilização do BeautifulSoup
- Bot de Web Scraping com BeautifulSoup
Primeiro, vamos começar do início. Pelos conceitos de Crawler e Parser!
Crawler e Parser
Um Crawler, também conhecido como Spider, é um tipo de script que realiza a varredura na web de maneira metódica e automatizada.
Ele serve para coletar recursos específicos, como, por exemplo, links ou dados específicos de páginas da web.
Suponha que a Página A contenha um link para a Página B e que a Página B possua um link para a Página C.
Através da leitura do código HTML, podemos - de forma automatizada - traçar esse “caminho”, saindo da Página A à Página C, passando pela Página B.
Para isso, basta analisar o código HTML da Página A, em busca de tags <a>, como por exemplo:
1
<a href="https://paginab.com.br">Página B</a>
E em seguida, realizar a mesma operação na Página B, em busca de outra tag <a> que faz referência à Página C, por exemplo:
1
<a href="https://paginac.com.br">Página C</a>
Assim como uma aranha “navega” em sua rede, um processo Spider (ou Crawler) navega na “Net” (que significa Rede, em Inglês)!
Já o Parser é uma ferramenta que nos ajuda a extrair dados de um documento. No mundo do Web Scraping, ele é comumente usado para extrair dados de páginas HTML e XML.
No processo de Parsing, algum programa irá “digerir” os dados “esquisitos” de uma página HTML para uma representação mais simples de ser compreendida e processada, possibilitando a busca e extração de dados!
Esse dois processos (Crawler e Parser) são muito importantes no contexto do Web Scraping.
BeautifulSoup: Seu Amigo na Coleta de Dados
O BeautifulSoup é uma biblioteca Python que facilita a raspagem de informações das páginas da web.
Ele possui um poderoso parser que proporciona uma maneira Pythonica de navegar, pesquisar e modificar os dados de um Website.
Para utilizá-lo, utilize o pip e instale o BeautifulSoup em um ambiente virtual (se ainda não sabe o que são ambientes virtuais, clique aqui e aprenda a utilizar o Virtualenv):
1
pip install beautifulsoup4
Uma coisa importante a notar aqui é que o BeautifulSoup não baixa as páginas da web para nós. Por isso ele geralmente é utilizado com a biblioteca requests para buscar o código HTML de uma página web (instale-o no mesmo ambiente virtual com pip install requests).
Sabendo disso, vamos em frente.
Mas antes… Está curtindo esse conteúdo? ![]()
Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?
Principais métodos de utilização do BeautifulSoup
Antes de começarmos a usar o BeautifulSoup, devemos dar uma olhada em seus principais métodos:
-
find()efind_all(): Esses dois métodos são usados frequentemente para encontrar tags. O métodofind_all()busca todas as instâncias de uma tag efind()busca apenas a primeira instância de uma tag. -
get(): Este método é usado para acessar os atributos de uma tag. -
text: Esta propriedade é usada para obter o texto de dentro de uma tag.
Agora que conhecemos o básico, vamos utilizar o BeautifulSoup para um exemplo simples de WebScraping:
1
2
3
4
5
6
7
8
9
10
from bs4 import BeautifulSoup
import requests
URL = 'https://www.python.org/'
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')
header = soup.find('h1')
print(header)
Se você rodar este script, ele retornará o que há dentro da primeira tag ‘<h1>’ que encontrar na página principal do site python.org, que é o seguinte (no momento em que escrevo este artigo):
1
2
3
<h1 class="site-headline">
<a href="/"><img alt="python™" class="python-logo" src="/static/img/python-logo.png"/></a>
</h1>
Bot de Web Scraping com BeautifulSoup
Finalmente, estamos prontos para começar a trabalhar em nosso mini projeto!
Vamos criar um simples bot de raspagem para extrair as últimas notícias do site Python.org.
O primeiro passo para qualquer projeto de Web Scraping é analisar o código HTML da página de onde se quer extrair os dados.
No nosso caso, podemos acessar o website alvo, que no caso é o www.python.org/blogs e verificar o código HTML.
Com a ajuda das Ferramentas de Desenvolvedor do Navegador (Chrome ou Firefox, por exemplo), podemos passar o mouse em cima da região onde queremos extrair os dados e analisar a estrutura do código HTML:

Dessa forma, sabemos que o que queremos está: dentro de uma lista <ul> com a classe CSS list-recent-posts, que contém itens <li>, que contém sub-títulos <h3> e que contém, por fim, links com a tag <a>.
Com isso podemos buscar os dados que queremos da seguinte forma:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from bs4 import BeautifulSoup
import requests
URL = 'https://www.python.org/blogs/'
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')
# Localizamos a lista <ul> das últimas notícias
news_ul = soup.find('ul', class_='list-recent-posts')
# Encontramos todas as notícias nessa <ul>
latest_news = news_ul.find_all('h3')
# Imprimimos cada notícia, buscando o atributo href de cada link
for news in latest_news:
link = news.find('a')
print(f"Artigo: {news.text}\n Link: {link.attrs['href']}")
Este script irá rastrear a página de blogs do site Python.org e imprimirá as últimas notícias em um formato de texto limpo:
1
2
3
4
5
6
7
8
9
10
Artigo: Python 3.10.14, 3.9.19, and 3.8.19 is now available
Link: https://pythoninsider.blogspot.com/2024/03/python-31014-3919-and-3819-is-now.html
Artigo: Python 3.13.0 alpha 5 is now available
Link: https://pythoninsider.blogspot.com/2024/03/python-3130-alpha-5-is-now-available.html
Artigo: White House recommends use of memory-safe languages like Python
Link: https://pyfound.blogspot.com/2024/02/white-house-recommends-.html
Artigo: Python 3.13.0 alpha 4 is now available
Link: https://pythoninsider.blogspot.com/2024/02/python-3130-alpha-4-is-now-available.html
Artigo: Software Bill-of-Materials documents are now available for CPython
Link: https://pyfound.blogspot.com/2024/02/software-bill-of-materials-now-available-for-cpython.html
Muito maneiro não é mesmo?!
Agora, se quiser aprender mais ainda sobre Web Scraping, eu posso te ajudar!
Em nosso primeiro Projeto da Jornada Python você vai aprender a buscar dados financeiros na internet para criar uma estratégia de investimentos para você!
Além disso, você vai aprender Python do básico ao avançado através de projetos completos e muito exercício.
E não para por aí: você ainda vai aprender a desenvolver aplicações Web utilizando o famoso framework Django!
Tudo isso com suporte às suas dúvidas, Comunidade Exclusiva de Alunos, certificado de conclusão, e-books exclusivos e muito mais!
Então não perca tempo, conheça a Jornada Python clicando no botão abaixo e sinta-se confiante na Programação Python!
Te vejo na Jornada, caro Pythonista!
Conclusão
Neste artigo você aprendeu sobre web scraping com Python e BeautifulSoup. Discutimos sobre Crawler e Parser, conhecemos melhor a biblioteca BeautifulSoup e até construímos um simples bot de raspagem.
A combinação de Python e BeautifulSoup torna o web scraping acessível, até mesmo para programadores menos experientes.
Com um pouco de prática, você pode começar a extrair uma grande quantidade de dados da web, que podem ser usados para análise de dados, aprendizado de máquina e uma variedade de outras aplicações.
Até a próxima vez, continue programando e se divertindo!
"Porque o Senhor dá a sabedoria, e da sua boca vem a inteligência e o entendimento" Pv 2:6