Neste tutorial, você vai explorar:
- A definição de um raspador de dados de notícias e por que ele é útil
- Os tipos de dados que você pode coletar com eles
- As duas abordagens mais comuns para criar um raspador de dados de notícias na web
- Como criar um processo de raspagem de dados de notícias com IA
- Como criar um script de raspagem de dados de notícias com Python
- Os desafios de raspar artigos de notícias
Vamos lá!
O que é um raspador de dados de notícias?
Um raspador de dados de notícias é uma ferramenta automatizada para extrair dados de sites de notícias. Ele coleta informações como títulos, datas de publicação, autores, tags e conteúdo do artigo.
Os raspadores de dados de notícias podem ser criados com IA e várias linguagens de programação para raspagem de dados na web. Eles são amplamente usados para pesquisa, análise de tendências ou criação de agregadores de notícias, economizando tempo em comparação com a coleta manual de dados.
Dados para extrair de artigos de notícias
Os dados que você pode extrair de artigos de notícias incluem:
- Títulos: o título principal e os subtítulos do artigo.
- Data de publicação: a data em que o artigo foi publicado.
- Autor: o nome dos escritores ou jornalistas que escreveram o conteúdo.
- Conteúdo: o corpo do texto do artigo.
- Tags/tópicos: palavras-chave ou categorias relacionadas ao artigo.
- Anexos multimídia: elementos visuais que acompanham o artigo.
- URLs: links para artigos ou referências relacionados.
- Artigos relacionados: outras notícias relacionadas ou semelhantes ao artigo atual.
Como criar um raspador de dados de notícias
Ao criar uma solução para extrair dados automaticamente de artigos de notícias, existem duas abordagens principais:
- Usando IA para extração de dados
- Criação de scripts de raspagem de dados personalizados
Vamos apresentar os dois métodos e explorar seus prós e contras. Você encontrará etapas de implementação detalhadas posteriormente neste guia.
Usando IA
A ideia por trás dessa abordagem é fornecer o conteúdo HTML de um artigo de notícias a um modelo de IA para extração de dados. Como alternativa, você pode fornecer o URL de um artigo de notícias para um provedor de LLM (modelo de linguagem de grande escala) e solicitar que ele extraia informações importantes, como o título e o conteúdo principal.
👍 Prós:
- Funciona em praticamente qualquer site de notícias
- Automatiza todo o processo de extração de dados
- Pode manter a formatação, como recuo original, estrutura do título, negrito e outros elementos estilísticos
👎 Contras:
- Os modelos avançados de IA são proprietários e podem ser caros
- Você não tem controle total sobre o processo de raspagem de dados
- Os resultados podem incluir alucinações (informações imprecisas ou fabricadas)
Usando um script de raspagem de dados personalizado
O objetivo aqui é codificar manualmente um bot de raspagem de dados que tem como alvo sites específicos de fontes de notícias. Esses scripts se conectam ao site desejado, analisam o HTML das páginas de notícias e extraem dados delas.
👍 Prós:
- Você tem controle total sobre o processo de extração de dados
- Pode ser personalizado para atender a requisitos específicos
- Econômico, pois não depende de fornecedores terceirizados
👎 Contras:
- Requer conhecimento técnico para projetar e manter
- Cada site de notícias precisa de seu próprio script de captura dedicado
- Lidar com casos extremos (por exemplo, artigos ao vivo) pode ser desafiador
Abordagem 1: use a IA para fazer raspagem de dados em notícias
A ideia é usar a IA para lidar com o trabalho pesado para você. Isso pode ser feito usando ferramentas LLM premium diretamente, como as versões mais recentes do ChatGPT com recursos de rastreamento, ou integrando modelos de IA em seu script. No último caso, você também precisará de conhecimento técnico e da habilidade de escrever um script básico.
Estas são as etapas normalmente envolvidas no processo de raspagem de dados de notícias com IA:
- Coletar dados: recupere o HTML da página desejada usando um cliente HTTP. Se você estiver usando uma ferramenta como o ChatGPT com recursos de rastreamento, essa etapa é automatizada e você só precisa passar o URL da notícia.
- Pré-processe os dados: se estiver trabalhando com HTML, limpe o conteúdo antes de enviá-lo à IA. Isso pode envolver a remoção de scripts, anúncios ou estilos desnecessários. Concentre-se em partes significativas da página, como título, nome do autor e corpo do artigo.
- Envie dados para o modelo de IA: para ferramentas como o ChatGPT com recursos de navegação, basta fornecer o URL do artigo junto com um prompt bem elaborado. A IA analisará a página e retornará dados estruturados. Como alternativa, forneça o conteúdo HTML limpo ao modelo de IA e forneça instruções específicas sobre o que extrair.
- Lidar com a saída da IA: a resposta da IA geralmente é desestruturada ou semi-estruturada Use seu script para processar e formatar o arquivo de saída no formato desejado.
- Exporte os dados raspados: salve os dados estruturados em seu formato preferido, seja um banco de dados, um arquivo CSV ou outra solução de armazenamento.
Para obter mais informações, leia nosso artigo sobre como usar a IA para fazer raspagem de dados na web.
Abordagem 2: crie um script de raspagem de dados de notícias
Para criar manualmente um raspador de dados de notícias, você deve primeiro se familiarizar com o site escolhido. Inspecione a página de notícias para entender sua estrutura, quais dados você pode coletar e quais ferramentas de raspagem de dados usar.
Para sites de notícias simples, essa dupla deve ser suficiente:
- Solicitações: uma biblioteca Python para enviar solicitações HTTP. Ele permite que você recupere o conteúdo HTML bruto de uma página da web.
- Beautiful Soup: uma biblioteca Python para analisar documentos HTML e XML Ela ajuda a navegar e extrair dados da estrutura HTML da página. Saiba mais em nosso guia sobre rastreamento de dados com Beautiful Soup.
Você pode instalá-los em Python com:
pip install requests beautifulsoup4
Para sites de notícias que usam tecnologias anti-bot ou exigem execução de JavaScript, você deve usar ferramentas de automação de navegador como o Selenium. Para mais orientações, consulte nosso guia sobre raspagem de dados com o Selenium.
Você pode instalar o Selenium em Python com:
pip install selenium
Nesse caso, o processo é o seguinte:
- Conecte-se ao site escolhido: recupere o HTML da página e analise-o.
- Selecione os elementos de interesse: identifique os elementos específicos (por exemplo, título, conteúdo) na página.
- Extraia dados: extraia as informações desejadas desses elementos.
- Limpe os dados raspados: processe os dados para remover qualquer conteúdo desnecessário, se necessário.
- Exporte os dados raspados do artigo de notícias: salve os dados em seu formato preferido, como JSON ou CSV.
Nos capítulos seguintes, você verá exemplos de scripts de captura de notícias em Python para extrair dados da CNN, Reuters e BBC!
Raspagem de dados da CNN
Artigo de notícia escolhido: “Condições úmidas e lamacentas dominam o frio do Nordeste enquanto uma onda ártica se aproxima do fim de semana de Ação de Graças”
A CNN não tem medidas anti-raspagem específicas em vigor. Portanto, um script simples usando Requests e Beautiful Soup será suficiente:
import requests
from bs4 import BeautifulSoup
import json
# URL of the CNN article
url = "https://www.cnn.com/2024/11/28/weather/thanksgiving-weekend-weather-arctic-storm/index.html"
# Send an HTTP GET request to the article page
response = requests.get(url)
# Parse the HTML content of the page
soup = BeautifulSoup(response.content, "html.parser")
# Extract the title
title_element = soup.select_one("h1")
title = title_element.get_text(strip=True)
# Extract the article content
article_content = soup.select_one(".article__content")
content = article_content.get_text(strip=True)
# Prepare the data to be exported as JSON
article = {
"title": title,
"content": content
}
# Export data to a JSON file
with open("article.json", "w", encoding="utf-8") as json_file:
json.dump(article, json_file, ensure_ascii=False, indent=4)
Execute o script e ele gerará um arquivo JSON contendo:
{
"title": "Soggy, sloppy conditions smother the chilly Northeast as an Arctic blast takes aim for Thanksgiving weekend",
"content": "CNN—After the Northeast was hammered by frigid rain or snow on Thanksgiving, a bitter blast of Arctic air is set to envelop much of the country by the time travelers head home this weekend. ... (omitted for brevity)"
}
Uau! Você acabou de fazer raspagem de dados na CNN.
Raspagem de dados na Reuters
Artigo de notícias escolhido: “Macron elogia artesãos por restaurarem a Catedral de Notre-Dame em Paris”
Lembre-se de que a Reuters tem uma solução anti-bot especial que bloqueia todas as solicitações que não vêm de um navegador. Se você tentar fazer uma solicitação automática usando Requests
ou qualquer outro cliente HTTP Python, você receberá a seguinte página de erro:
<html><head><title>reuters.com</title><style>#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opacity:1;}}</style></head><body style="margin:0"><p id="cmsg">Please enable JS and disable any ad blocker</p><script data-cfasync="false">var dd={'rt':'c','cid':'AHrlqAAAAAMAjfxsASop65YALVAczg==','hsh':'2013457ADA70C67D6A4123E0A76873','t':'fe','s':46743,'e':'da7ef98f4db57c2e85c7ae9df5bf374e4b214a77c73ee80d700757e60962367f','host':'geo.captcha-delivery.com','cookie':'lperXjdnamczWV5K~_ghwm4FDVstzxj76zglHEWJSBJjos3qpM2P8Ir0eNn5g9yh159oMTwy9UaWuWgflgV51uAJZKzO7JJuLN~xg2wken37VUTvL6GvZyl89SNuHrSF'}</script><script data-cfasync="false" src="https://ct.captcha-delivery.com/c.js"></script></body></html>
Portanto, você deve usar uma ferramenta de automação de navegador como o Selenium para coletar artigos de notícias da Reuters. Veja como:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import json
# Initialize the WebDriver
driver = webdriver.Chrome(service=Service())
# URL of the Reuters article
url = "https://www.reuters.com/world/europe/excitement-relief-paris-notre-dame-cathedral-prepares-reopen-2024-11-29/"
# Open the URL in the browser
driver.get(url)
# Extract the title from the <h1> tag
title_element = driver.find_element(By.CSS_SELECTOR, "h1")
title = title_element.text
# Select all text elements
paragraph_elements = driver.find_elements(By.CSS_SELECTOR, "[data-testid^=\"paragraph-\"]")
# Aggregate their text
content = " ".join(p.text for p in paragraph_elements)
# Prepare the data to be exported as JSON
article = {
"title": title,
"content": content
}
# Export data to a JSON file
with open("article.json", "w", encoding="utf-8") as json_file:
json.dump(article, json_file, ensure_ascii=False, indent=4)
Se você iniciar o script acima e não for bloqueado, o arquivo de saída será o seguinte article.json
:
{
"title": "Macron lauds artisans for restoring Notre-Dame Cathedral in Paris",
"content": "PARIS, Nov 29 (Reuters) - French President Emmanuel Macron praised on Friday the more than 1,000 craftspeople who helped rebuild Paris' Notre-Dame Cathedral in what he called \"the project of the century\", ... (omitted for brevity)"
}
Excelente! Você acabou de realizar a raspagem de dados da Reuters.
Raspagem de dados da BBC
Artigo de notícias selecionado: “Black Friday: como identificar uma oferta e não ser enganado”
Assim como a CNN, a BBC não possui soluções anti-bot específicas. Assim, um simples script de raspagem de dados usando o cliente HTTP e a dupla de analisadores de HTML serão suficientes:
import requests
from bs4 import BeautifulSoup
import json
# URL of the BBC article
url = "https://www.bbc.com/news/articles/cvg70jr949po"
# Send an HTTP GET request to the article page
response = requests.get(url)
# Parse the HTML content of the page
soup = BeautifulSoup(response.content, "html.parser")
# Extract the title
title_element = soup.select_one("h1")
title = title_element.get_text(strip=True)
# Extract the article content
article_content_elements = soup.select("[data-component=\"text-block\"], [data-component=\"subheadline-block\"]")
# Aggregate their text
content = "\n".join(ace.text for ace in article_content_elements)
# Prepare the data to be exported as JSON
article = {
"title": title,
"content": content
}
# Export data to a JSON file
with open("article.json", "w", encoding="utf-8") as json_file:
json.dump(article, json_file, ensure_ascii=False, indent=4)
Execute-o e ele produzirá este arquivo article.json
:
{
"title": "Black Friday: How to spot a deal and not get ripped off",
"content": "The Black Friday sales are already in full swing and it can be easy to get swept up in the shopping frenzy and end up out of pocket - instead of bagging a bargain... (omitted for brevity)"
}
Incrível! Você acabou de fazer raspagem de dados na BBC.
Desafios na raspagem de dados de notícias e como superá-los
Nos exemplos acima, segmentamos alguns sites de notícias e extraímos apenas o título e o conteúdo principal de seus artigos. Essa simplicidade fez com que a raspagem de dados de notícias parecesse fácil. Na realidade, isso é muito mais complexo, já que a maioria dos sites de notícias detecta e bloqueia ativamente bots:
Alguns dos desafios que você precisa considerar são:
- Certifique-se de que os artigos raspados mantenham sua estrutura de cabeçalho adequada
- Vá além dos títulos e do conteúdo principal para coletar metadados, como tags, autores e datas de publicação
- Automatize o processo de raspagem de dados para lidar com vários artigos em vários sites com eficiência
Para enfrentar esses desafios, você pode:
- Aprender técnicas avançadas: confira nossos guias sobre como contornar o CAPTCHA com Python e explore os tutoriais de raspagem de dados para obter dicas práticas.
- Usar ferramentas avançadas de automação: empregue ferramentas robustas como Playwright Stealth para raspar sites com mecanismos anti-bot.
Ainda assim, a melhor solução é aproveitar uma API dedicada para raspagem de dados de notícias.
A API de raspagem de dados de notícias da Bright Data oferece uma solução completa e eficiente para raspar as principais fontes de notícias, como BBC, CNN, Reuters e Google News. Com essa API, você pode:
- Extrair dados estruturados, como identificações, URLs, títulos, autores, tópicos e muito mais
- Dimensionar seus projetos de raspagem de dados sem se preocupar com infraestrutura, servidores proxy ou bloqueios de sites
- Ignorar os bloqueios e interrupções
Simplifique seu processo de coleta de notícias e concentre-se no que importa: analisar os dados!
Conclusão
Neste artigo, você aprendeu o que é um raspador de dados de notícias e o tipo de dados que ele pode recuperar de artigos de notícias. Você também viu como criar um usando uma solução baseada em IA ou scripts manuais.
Não importa o quão sofisticado seja seu script de raspagem de dados de notícias, a maioria dos sites ainda pode detectar atividades automatizadas e bloquear seu acesso. A solução para esse desafio é uma API dedicada para raspagem de dados de notícias, projetada especificamente para extrair dados de notícias de forma confiável de várias plataformas.
Essas APIs oferecem dados estruturados e abrangentes, personalizados para cada fonte de notícias:
- API de raspagem de dados da CNN: extraia dados como títulos, autores, tópicos, datas de publicação, conteúdo, imagens, artigos relacionados e muito mais.
- API de raspagem de dados do Google News: reúna informações como títulos, tópicos, categorias, autores, datas de publicação, fontes e muito mais.
- API de raspagem de dados da Reuters: recupere dados incluindo identificações, URLs, autores, títulos, tópicos, datas de publicação e muito mais.
- API de raspagem de dados da BBC: colete detalhes como títulos, autores, tópicos, datas de publicação, conteúdo, imagens, artigos relacionados e muito mais.
Se criar um raspador de dados não for sua preferência, considere nossos conjuntos de dados de notícias prontos para uso. Esses conjuntos de dados são pré-compilados e incluem registros abrangentes:
- BBC News: um conjunto de dados cobrindo todos os principais pontos de dados, com dezenas de milhares de registros.
- CNN News: um conjunto de dados incluindo todos os pontos críticos de dados, com centenas de milhares de registros.
- Google News: um conjunto de dados cobrindo todos os principais pontos de dados, com dezenas de milhares de registros.
- Reuters News: um conjunto de dados cobrindo todos os principais pontos de dados, com centenas de milhares de registros.
Explore todos os nossos conjuntos de dados para jornalistas.
Crie uma conta gratuita na Bright Data hoje mesmo para testar nossas APIs de raspagem de dados ou explorar nossos conjuntos de dados.
Não é necessário cartão de crédito