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
pyfetchenvia uma requisição assíncrona, portanto o programa usaawaitno nível superior.- A verificação de status impede que páginas de erro sejam analisadas como o documento de destino.
response.string()lê o corpo da resposta, que BeautifulSoup analisa comhtml.parser.find("h1")retorna o primeiro cabeçalho, enquantofind_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 Details | Significado |
|---|---|
| Requests mostra um GET para raw.githubusercontent.com | O scraper tentou baixar o arquivo HTML |
| O status da requisição é 200 | O navegador recebeu a página com sucesso |
| A requisição falhou ou está bloqueada | Verificar conectividade e se o destino permite requisições cross-origin do navegador |
| Packages lista beautifulsoup4 | web.run detectou o import de bs4 e carregou o pacote compatível |
| Status 200 mas valores extraídos ausentes | A 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
- Escolha uma página que permita acesso automatizado e requisições do navegador.
- Baixe o HTML e rejeite status HTTP não bem-sucedidos antes de analisar.
- Crie um único objeto BeautifulSoup a partir do corpo da resposta.
- Inspecione o markup e selecione elementos por tag semântica, atributo ou seletor CSS.
- 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.
Extrair e normalizar links
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
| Tarefa | Seletor | Resultado |
|---|---|---|
| Primeiro cabeçalho da página | soup.find("h1") | Uma tag ou None |
| Todos os links | soup.find_all("a") | Uma lista de tags |
| Links com destino | soup.select("a[href]") | Tags que correspondem a um seletor CSS |
| Elementos dentro de um artigo | soup.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
- 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.
- Elementos ausentes requerem verificação explícita. BeautifulSoup retorna
Nonequando um seletor não corresponde; acessar seu texto imediatamente geraria um erro. - 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.