Dans ce tutoriel, nous allons aborder :
- La définition d’un scraper de nouvelles et son utilité
- Les types de données que l’on peut scraper
- Les deux approches les plus courantes pour construire un scraper d’articles d’actualités sur le web
- Comment construire un processus de scraping de nouvelles avec l’IA
- Comment créer un script de scraping de nouvelles avec Python
- Les défis du scraping d’articles de presse
C’est parti !
Qu’est-ce qu’un scraper d’articles d’actualités ?
Un scraper d’articles actualités est un outil automatisé permettant d’extraire les données présentes sur les sites d’information. Il recueille des informations telles que les titres, les dates de publication, les auteurs, les balises et le contenu des articles.
On peut créer un scrapeur d’articles d’actualités grâce à l’IA et plusieurs langages de programmation spécialisés dans le web scraping. Ils sont largement utilisés pour la recherche, l’analyse des tendances ou la création d’agrégateurs de nouvelles, ce qui permet de gagner du temps par rapport à la collecte manuelle de données.
Données à extraire des articles de presse
Les données que vous pouvez extraire des articles de presse sont les suivantes :
- Titres: Le titre principal et les sous-titres de l’article.
- Date de publication: Date de publication de l’article.
- Auteur: Le nom des rédacteurs ou journalistes qui ont rédigé le contenu.
- Content: Le corps du texte de l’article.
- Tags/Thèmes: Mots-clés ou catégories liés à l’article.
- Fichiers multimédias : éléments visuels accompagnant l’article.
- URLs: Liens vers des articles ou des références connexes.
- Articles connexes: Autres nouvelles qui sont liées ou similaires à l’article actuel.
Comment construire un scraper d’articles d’actualités
Lorsqu’il s’agit d’élaborer une solution pour extraire automatiquement des données d’articles de presse, il existe deux approches principales :
- Utiliser l’IA pour l’extraction de données
- Construire des scripts de scraping personnalisés
Présentons ces deux méthodes et examinons leurs avantages et leurs inconvénients. Vous trouverez les étapes de mise en œuvre détaillées plus loin dans ce guide.
Utilisation de l’IA
L’idée sous-jacente à cette approche est de fournir le contenu HTML d’un article de presse à un modèle d’IA pour l’extraction de données. Vous pouvez également fournir l’URL d’un article de presse à un fournisseur de LLM (Large Language Model) et lui demander d’extraire des informations clés, telles que le titre et le contenu principal.
👍 Avantages :
- Fonctionne sur presque tous les sites d’information
- Automatise l’ensemble du processus d’extraction des données
- Peut conserver la mise en forme, comme l’indentation originale, la structure des titres, les caractères gras et d’autres éléments stylistiques.
👎 Inconvénients :
- Les modèles d’IA avancés sont propriétaires et peuvent être coûteux
- Vous n’avez pas un contrôle total sur le processus de raclage
- Les résultats peuvent inclure des hallucinations (informations inexactes ou fabriquées)
Utilisation d’un script de scraping personnalisé
L’objectif ici est de coder manuellement un robot de scraping qui cible des sites d’actualités spécifiques. Ces scripts se connectent au site cible, analysent le code HTML des articles et en extraient les données.
👍 Avantages :
- Vous avez un contrôle total sur le processus d’extraction des données
- Peut être adapté pour répondre à des besoins spécifiques
- Rentable, car il ne dépend pas de fournisseurs tiers
👎 Inconvénients :
- Requiert des connaissances techniques pour la conception et la maintenance
- Chaque site d’actualités nécessite un script de scraping spécifique.
- Le traitement de certains cas particuliers (comme les articles en direct, par exemple) peut s’avérer difficile.
Approche n° 1 : utiliser l’IA pour scraper les articles d’actualités
L’IA effectuera la majeure partie du travail à votre place. Pour ce faire, vous pouvez soit utiliser directement des outils LLM haut de gamme – comme les dernières versions de ChatGPT avec des capacités de crawling– ou en intégrant des modèles d’IA dans votre script. Dans ce dernier cas, vous aurez également besoin de connaissances techniques et de la capacité d’écrire un script de base.
Voici les étapes typiques du processus de scraping d’articles d’actualité par l’IA :
- Collecter des données: Récupérer le code HTML de la page cible à l’aide d’un client HTTP. Si vous utilisez un outil comme ChatGPT avec des fonctions de crawling, cette étape est automatisée et vous n’avez qu’à transmettre l’URL de l’article d’actualité.
- Prétraiter les données: Si vous travaillez avec du HTML, nettoyez le contenu avant de l’envoyer à l’IA. Il peut s’agir de supprimer les scripts, les publicités ou les styles inutiles. Concentrez-vous sur les parties significatives de la page, telles que le titre, le nom de l’auteur et le corps de l’article.
- Envoyer les données au modèle d’IA : pour les outils comme ChatGPT dotés de fonctions de navigation, il suffit de fournir l’URL de l’article ainsi qu’une invite bien conçue. L’IA analysera la page et renverra des données structurées. Une autre solution consiste à transmettre le contenu HTML nettoyé au modèle d’IA et à lui donner des instructions spécifiques sur ce qu’il doit extraire.
- Traiter les résultats de l’IA: La réponse de l’IA est souvent non structurée ou semi-structurée. Utilisez votre script pour traiter et formater la sortie dans le format souhaité.
- Exporter les données extraites: Enregistrer les données structurées dans le format de votre choix, qu’il s’agisse d’une base de données, d’un fichier CSV ou d’une autre solution de stockage.
Pour plus d’informations, lisez notre article sur comment utiliser l’IA pour le web scraping.
Approche n° 2 : créer un script de capture d’informations
Pour construire manuellement un scraper de nouvelles, vous devez d’abord vous familiariser avec le site cible. Inspectez la page d’actualités pour comprendre sa structure, les données que vous pouvez extraire et les outils d’extraction à utiliser.
Pour les sites d’information simples, ce duo devrait suffire :
- Requêtes: Une bibliothèque Python pour envoyer des requêtes HTTP. Il permet de récupérer le contenu HTML brut d’une page web.
- Beautiful Soup : une bibliothèque Python pour analyser les documents HTML et XML. Il permet de naviguer et d’extraire des données de la structure HTML de la page. Pour en savoir plus, consultez notre guide sur le scraping avec Beautiful Soup.
Vous pouvez les installer dans Python avec :
pip install requests beautifulsoup4
Pour les sites d’information utilisant des technologies anti-bot ou nécessitant l’exécution de JavaScript, vous devez utiliser des outils d’automatisation du navigateur tels que Selenium. Pour plus d’informations, consultez notre guide sur le scraping avec Selenium.
Vous pouvez installer Selenium dans Python avec :
pip install selenium
Dans ce cas, le processus est le suivant :
- Se connecter au site cible: Récupérer le HTML de la page et l’analyser.
- Sélectionner les éléments d’intérêt: Identifier les éléments spécifiques (par exemple, le titre, le contenu) sur la page.
- Extraire les données: Tirer les informations souhaitées de ces éléments.
- Nettoyer les données extraites: Traiter les données pour supprimer tout contenu inutile, si nécessaire.
- Exporter les données des articles de presse récupérés: Enregistrer les données dans le format de votre choix, tel que JSON ou CSV.
Dans les chapitres suivants, vous verrez des exemples de scripts Python pour extraire les données des sites de CNN, Reuters et BBC !
Scraper les données de CNN
Article de presse cible : « Soggy, sloppy conditions smother the chilly Northeast as an Arctic blast takes aim for Thanksgiving weekend » (une météo détrempée submerge le Nord-Est froid alors qu’un souffle arctique vise le week-end de Thanksgiving)
CNN n’a pas mis en place de mesures spécifiques contre le raclage . Un simple script utilisant Requests et Beautiful Soup suffira donc :
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)
Exécutez le script, et il générera un fichier JSON contenant :
{
"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)"
}
Super ! Vous venez de scraper CNN.
Scraper les données de Reuters
Article de presse cible : « Macron lauds artisans for restoring Notre-Dame Cathedral in Paris » (Macron félicite les artisans pour la restauration de la cathédrale Notre-Dame de Paris)
N’oubliez pas que Reuters dispose d’une solution anti-bot spéciale qui bloque toutes les demandes ne provenant pas d’un navigateur. Si vous tentez d’effectuer une requête automatisée à l’aide de Requests
ou de tout autre client HTTP Python, vous recevrez la page d’erreur suivante :
<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>
Vous devez donc utiliser un outil d’automatisation de navigateur tel que Selenium pour récupérer les articles de presse de Reuters. Voici comment :
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)
Si vous lancez le script ci-dessus – et que vous n’êtes pas bloqué – le résultat sera le fichier article.json
suivant :
{
"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)"
}
Merveilleux ! Vous venez de scraper Reuters.
BBC Scraping
Article cible : « Black Friday: How to spot a deal and not get ripped off » (Black Friday : comment repérer une bonne affaire et ne pas se faire arnaquer)
Tout comme CNN, la BBC n’a pas mis en place de solutions anti-bots spécifiques. Ainsi, un simple script de scraping utilisant le duo client HTTP et analyseur HTML fera l’affaire :
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)
Exécutez-le. Vous devriez recevoir le fichier article.json
suivant :
{
"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)"
}
Incroyable ! Vous venez de scraper la BBC.
Les défis du scraping d’informations et comment les surmonter
Dans les exemples ci-dessus, nous avons ciblé quelques sites d’information et extrait uniquement le titre et le contenu principal de leurs articles. Toute cette simplicité pourrait nous donner l’impression qu’il est facile de scraper des articles d’information. En réalité, c’est beaucoup plus complexe, car la plupart des sites d’actualités détectent et bloquent activement les robots :
Voici quelques-uns des défis que vous devez relever :
- Veiller à ce que les articles récupérés conservent la bonne structure d’en-tête
- Aller au-delà des titres et du contenu principal pour récupérer des métadonnées telles que les tags, les auteurs et les dates de publication
- Automatiser le processus de scraping pour traiter efficacement plusieurs articles sur différents sites web
Pour relever ces défis, vous pouvez
- Apprendre des techniques avancées: Consultez nos guides sur le contournement de CAPTCHA avec Python et explorez les tutoriels de scraping pour des conseils pratiques.
- Utiliser des outils d’automatisation avancés: Employer des outils robustes comme Playwright Stealth pour le scraping de sites avec des mécanismes anti-bots.
Néanmoins, la meilleure solution consiste à utiliser une API dédiée au scraping d’actualités.
L’API News Scraper de Bright Data offre une solution tout-en-un et efficace pour récupérer les principales sources d’informations telles que BBC, CNN, Reuters et Google News. Avec cette API, vous pouvez :
- Extrayez des données structurées telles que les ID, les URL, les titres, les auteurs, les sujets, etc.
- Développez vos projets de scraping sans vous soucier de l’infrastructure, des serveurs proxy ou des blocages de sites web
- Oublier les blocages et les interruptions
Optimisez votre processus de scraping d’actualités et concentrez-vous sur l’essentiel : l’analyse des données !
Conclusion
Dans cet article, vous avez appris ce qu’est un scraper de nouvelles et le type de données qu’il peut extraire des articles de presse. Vous avez également vu comment en construire un en utilisant une solution basée sur l’intelligence artificielle ou des scripts manuels.
Quel que soit le degré de sophistication de votre script de scraping de nouvelles, la plupart des sites peuvent toujours détecter une activité automatisée et bloquer votre accès. La solution à ce défi est une API dédiée News Scraper APIspécialement conçue pour extraire de manière fiable des données d’actualité à partir de diverses plates-formes.
Ces API fournissent des données structurées et complètes, adaptées à chaque source d’information :
- CNN Scraper API : extrait des données telles que le titre, les auteurs, le sujet, la date de publication, le contenu, les images, les articles connexes, etc.
- Google News Scraper API: Collecte d’informations telles que les titres, les sujets, les catégories, les auteurs, les dates de publication, les sources, etc.
- Reuters Scraper API: Récupérer des données telles que les ID, les URL, les auteurs, les titres, les sujets, les dates de publication, etc.
- BBC Scraper API : collecte de détails tels que le titre, les auteurs, le sujet, la date de publication, le contenu, les images, les articles connexes, etc.
Si la création d’un scraper vous rebute, pensez à nos ensembles de données d’actualités prêts à l’emploi. Ces ensembles de données sont pré-compilés et comprennent des enregistrements complets :
- BBC News : un ensemble de données couvrant tous les principaux points de données, avec des dizaines de milliers d’enregistrements.
- CNN News: Un ensemble de données comprenant tous les points de données critiques, avec des centaines de milliers d’enregistrements.
- Google News: Un ensemble de données couvrant tous les points de données clés, avec des dizaines de milliers d’enregistrements.
- Reuters News : un ensemble de données couvrant tous les principaux points de données, avec des centaines de milliers d’enregistrements.
Explorer tous nos ensembles de données pour les journalistes.
Créez un compte Bright Data gratuit dès aujourd’hui pour essayer nos API de scraper ou explorer nos ensembles de données.
Aucune carte de crédit requise