Programa Python para Extrair Conteúdo de Sites

Um programa Python para web scraping baixa HTML e extrai elementos selecionados. BeautifulSoup converte o markup em uma árvore de tags, atributos, texto e links pesquisável. O fluxo de trabalho é: requisição, validação, análise, seleção e salvamento. No web.run, Python é executado pelo Pyodide, então a atividade de rede e os pacotes carregados também aparecem no Run Details.

Programa Python para Extrair HTML de um Site

Saída:

A saída aparecerá aqui...

Saída:

Title: Header
Links found: 9

Como Este Exemplo Funciona

  1. pyfetch envia uma requisição assíncrona, portanto o programa usa await no nível superior.
  2. A verificação de status impede que páginas de erro sejam analisadas como o documento de destino.
  3. response.string() lê o corpo da resposta, que BeautifulSoup analisa com html.parser.
  4. find("h1") retorna o primeiro cabeçalho, enquanto find_all("a") retorna todos os links.

Inspecionar o Scraper com Run Details

Abra o Run Details após o programa terminar. Ele separa a requisição de página feita pelo scraper da atividade de pacotes necessária para executar o código.

Sinal do Run DetailsSignificado
Requests mostra um GET para raw.githubusercontent.comO scraper tentou baixar o arquivo HTML
O status da requisição é 200O navegador recebeu a página com sucesso
A requisição falhou ou está bloqueadaVerificar conectividade e se o destino permite requisições cross-origin do navegador
Packages lista beautifulsoup4web.run detectou o import de bs4 e carregou o pacote compatível
Status 200 mas valores extraídos ausentesA rede funciona; inspecionar o HTML e os seletores

A duração ao lado da requisição mede o download da página; a duração total também inclui carregamento de pacote, análise e execução Python. BeautifulSoup normalmente é baixado na primeira execução e permanece disponível no runtime atual, de modo que execuções posteriores podem ser mais rápidas e não mostrar atividade de pacote.

Como Fazer Web Scraping com Python

  1. Escolha uma página que permita acesso automatizado e requisições do navegador.
  2. Baixe o HTML e rejeite status HTTP não bem-sucedidos antes de analisar.
  3. Crie um único objeto BeautifulSoup a partir do corpo da resposta.
  4. Inspecione o markup e selecione elementos por tag semântica, atributo ou seletor CSS.
  5. Normalize o texto extraído e resolva URLs relativas antes de salvar os resultados.

Mais Exemplos de Python BeautifulSoup

Extrair todos os cabeçalhos de seção

Use um seletor CSS para coletar vários níveis de cabeçalhos:

for heading in soup.select("h2, h3"):
    print(heading.get_text(" ", strip=True))

O separador mantém o texto de tags aninhadas separado, enquanto strip=True remove espaços em branco ao redor.

Resolver links absolutos, relativos e de fragmento em relação à URL da página:

from urllib.parse import urljoin

for link in soup.select("a[href]"):
    print(urljoin(url, link["href"]))

O seletor [href] exclui âncoras sem destino, tornando o acesso ao atributo seguro.

Escolher Seletores BeautifulSoup

TarefaSeletorResultado
Primeiro cabeçalho da páginasoup.find("h1")Uma tag ou None
Todos os linkssoup.find_all("a")Uma lista de tags
Links com destinosoup.select("a[href]")Tags que correspondem a um seletor CSS
Elementos dentro de um artigosoup.select("article .item")Apenas descendentes correspondentes

Use find quando um elemento é esperado, find_all para uma coleção baseada em tags e select quando relações ou atributos tornam um seletor CSS mais claro.

Armadilhas do Web Scraping com Python

  1. Nem toda URL é acessível. O Pyodide roda no navegador, então uma página pode abrir em uma aba mas rejeitar uma requisição cross-origin do web.run.
  2. Elementos ausentes requerem verificação explícita. BeautifulSoup retorna None quando um seletor não corresponde; acessar seu texto imediatamente geraria um erro.
  3. Conteúdo gerado por JavaScript está ausente do HTML baixado. BeautifulSoup analisa a resposta do servidor mas não executa scripts; inspecione o corpo da resposta quando um seletor não retornar correspondências.

Respeite as regras de rastreamento, limite a frequência de requisições, armazene em cache páginas sem alterações e reduza a carga quando o servidor reportar muitas requisições.

Para o fluxo de controle ao redor, veja tratamento de exceções Python e verificações condicionais Python.

FAQ

Qual biblioteca Python é usada para web scraping?

BeautifulSoup analisa e consulta o HTML baixado. Um cliente de rede como pyfetch recupera o documento, enquanto BeautifulSoup seleciona elementos por tag, atributo ou seletor CSS.

BeautifulSoup consegue fazer scraping de sites com JavaScript?

BeautifulSoup analisa o HTML fornecido pelo servidor, mas não executa JavaScript. Elementos criados somente após a execução de scripts não aparecerão no documento analisado.