Tutorial: Criando um Crawler Simples para Extrair Dados da Wikipedia

José Henrique Luckmann
Senior Sistemas
Published in
4 min readOct 17, 2023

Introdução

A capacidade de extrair informações da web é muito importante no dia a dia, grande parte dos dados na internet não estão estruturados e disponíveis via API ou recurso semelhante. Um dos métodos mais poderosos para isso é o uso de crawlers, programas que navegam na web e coletam dados automaticamente. Neste tutorial, vou mostrar como criar um crawler simples para extrair dados da Wikipedia, explicando os conceitos por trás dele e enfatizando as boas práticas.

O que é um Crawler?

Um crawler, também conhecido como web crawler ou spider, é um programa de computador que percorre a web de forma sistemática, coletando informações de sites. Ele navega por páginas da web, extrai dados e os armazena para análise posterior. São amplamente utilizados em pesquisa, mineração de dados e automação de tarefas na web.

O agente simula um acesso normal na internet utilizando um navegador, garantindo assim que todas as informações que você vê na tela quando acessa a página vão estar disponíveis para a extração.

Boas Práticas para Criação de Crawlers

Antes de mergulharmos na criação do nosso crawler, é importante destacar algumas boas práticas:

Respeite os Termos de Serviço: Cada site tem suas regras e diretrizes para raspagem de dados. Certifique-se de revisar os termos de serviço da Wikipedia ou de qualquer site que você deseja extrair dados, e siga as diretrizes.

Limite as Solicitações: Evite sobrecarregar o servidor do site-alvo com solicitações em rápida sucessão. Use um intervalo adequado entre as solicitações para não causar problemas de tráfego.

Robots.txt: Verifique se o site possui um arquivo “robots.txt” que define as áreas que não devem ser rastreadas. Respeite essas regras.

Configurando o Ambiente

Antes de começar a escrever nosso crawler, precisamos configurar nosso ambiente. Vamos usar Python e a biblioteca “requests” para fazer solicitações HTTP, e o “Beautifulsoup” para analisar o HTML da Wikipédia.

pip install beautifulsoup4

from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as uReq, Request

Extraindo Dados da Wikipedia

Vamos criar um exemplo simples de crawler para extrair qual é o produto de uma empresa via Wikipedia. Primeiro, escolhemos uma página-alvo:

Página web da Senior Sistemas: https://pt.wikipedia.org/wiki/Senior_S.A.
url = "https://pt.wikipedia.org/wiki/P%C3%A1gina_principal"

Em seguida, fazemos uma solicitação HTTP para obter o conteúdo da página, passando o header para simular um navegador e depois utilizando o Beautifulsoup para analisar o HTML da página:

#Agente de usuário para evitar o erro 403
hdr = {'User-Agent': 'Mozilla/5.0'}
#Requisição para a página
req = Request(url, headers=hdr)

#Abre a conexão e baixa a página
page = uReq(req)
#Lê o conteúdo da página
page_soup = soup(page, features="lxml")

Coletando Dados

Para extrair os títulos das páginas da Wikipédia, precisamos identificar algum padrão do html da página que permita a gente localizar a informação que buscamos:

HTML da página

Podemos observar que a informação que a gente busca esta dentro de uma tag td, infelizmente a tag não tem nenhum identificador único então para localiza-la vamos utilizar a tag anterior a ela que contem o texto Produtos. Então vamos executar os seguintes passos:

  • Localizar uma tag <td> com o texto Produtos
  • Localizar a tag <td> que seja subsequente a ela
  • Extrair o texto desta tag
#Procura um elemento <td> com o texto "Produtos\n"
td_element = page_soup.find('td', string='Produtos\n')
if td_element:
#Se encontrar, procura o próximo elemento <td>
next_td = td_element.find_next('td')
if next_td:
#Se encontrar, pega o texto do elemento <td>
product = next_td.get_text(strip=False)

print(f"Produtos: {product}")

Conclusão

Criar um crawler simples para extrair dados da Wikipedia é muit útil e pode ser replicado em diversas fontes. Porém éimportante entender as boas práticas e respeitar as regras de cada plataforma. As paginas web são um recurso valioso, e devemos usá-lo de forma responsável. Para isto é importante se atentar aos termos de cada página, seguem alguns exemplos de termos que impedem o acesso a seus dados via crawler.

Glassdoor: https://www.glassdoor.com.br/sobre/terms/
Google Maps: https://www.google.com/intl/pt-BR/help/terms_maps/
Linkedin: https://www.linkedin.com/help/linkedin/answer/a1341387/prohibited-software-and-extensions

--

--