Scrapen von Nachrichtenartikeln mit Python und KI

Erstellen Sie einen News-Scraper mit KI oder Python, um Schlagzeilen, Autoren und mehr zu extrahieren, oder vereinfachen Sie Ihren Prozess mit Scraper-APIs oder Datensätzen.
12 min read
How to Scrape news Articles With Python blog image

In diesem Tutorial werden Sie Folgendes erfahren:

  • Definition eines News-Scrapers und warum er nützlich ist
  • Welche Arten von Daten man damit scrapen kann
  • Die zwei gängigsten Ansätze zur Erstellung eines Web-News-Scrapers
  • Erstellung eines News-Scraping-Prozesses mit KI
  • Erstellung eines Skripts für das News-Scraping mit Python
  • Herausforderungen beim Scraping von Nachrichtenartikeln

Dann legen wir mal los!

Was ist ein News-Scraper?

Ein News-Scraper ist ein automatisiertes Tool zur Extraktion von Daten aus Nachrichtenseiten. Er erfasst Informationen wie Schlagzeilen, Veröffentlichungsdaten, Autoren, Tags und Artikelinhalte.

News-Scraper können mit KI und verschiedenen Programmiersprachen für Web-Scraping entwickelt werden. Sie werden häufig für Recherchen, Trendanalysen oder zur Einrichtung von News-Aggregatoren verwendet und sparen im Gegensatz zur manuellen Datenerfassung Zeit.

Daten zum Scrapen aus Nachrichtenartikeln

Folgende Daten können aus Nachrichtenartikeln extrahiert werden:

  • Schlagzeilen: Haupt- und Untertitel des Artikels.
  • Veröffentlichungsdatum: Datum der Veröffentlichung des Artikels.
  • Autor: Der Name des Autors bzw. Journalisten, der den Inhalt verfasst hat.
  • Inhalt: Haupttext des Artikels.
  • Tags/Themen: Schlagwörter bzw. Kategorien, die sich auf den Artikel beziehen.
  • Multimedia-Anhänge: Visuelle Komponenten zum Artikel.
  • URLs: Links zu verwandten Artikeln oder Referenzen.
  • Verwandte Artikel: Andere Nachrichten, die sich auf den aktuellen Artikel beziehen oder diesem ähneln.

Erstellung eines News-Scrapers

Bei der Entwicklung einer Lösung zur automatischen Extraktion von Daten aus Nachrichtenartikeln bieten sich zwei Hauptansätze an:

  1. Verwendung von KI für die Datenextraktion
  2. Erstellung benutzerdefinierter Scraping-Skripte

Im Folgenden werden wir beide Methoden näher erläutern und ihre Vor- und Nachteile erkunden. Detaillierte Schritte zur Implementierung folgen später in diesem Leitfaden.

Verwendung von KI

Bei diesem Konzept geht es darum, den HTML-Inhalt eines Nachrichtenartikels einem KI-Modell zur Datenextraktion zur Verfügung zu stellen. Als Alternative dazu könnte man auch die URL eines Nachrichtenartikels an einen LLM-Anbieter (Large Language Model) übergeben und diesen bitten, Schlüsselinformationen wie den Titel und den Hauptinhalt zu extrahieren.

👍 Vorteile:

  • Funktioniert auf nahezu jeder Nachrichtenseite
  • Automatisiert den gesamten Prozess der Datenextraktion
  • Behält die Formatierung, wie z. B. die ursprüngliche Einrückung, Überschriftenstruktur, Fettdruck und weitere Stilelemente bei

👎 Nachteile:

  • Fortschrittliche KI-Modelle sind proprietär und mitunter auch teuer
  • Der Scraping-Prozess unterliegt nicht Ihrer vollen Kontrolle
  • Die Ergebnisse können Halluzinationen aufweisen (ungenaue oder erfundene Informationen)

Verwendung eines benutzerdefinierten Scraping-Skripts

Hierbei geht es darum, einen Scraping-Bot , der auf bestimmte Websites von Nachrichtenquellen ausgerichtet ist, manuell zu programmieren. Diese Skripte stellen eine Verbindung zu der betreffenden Website her, analysieren den HTML-Code der Nachrichtenseiten und extrahieren die dort enthaltenen Daten.

👍 Vorteile:

  • Der Extraktionsprozess der Daten unterliegt Ihrer vollen Kontrolle
  • Lässt sich auf spezifische Anforderungen ausrichten
  • Kostengünstig und unabhängig von Drittanbietern

👎 Nachteile:

  • Erfordert Fachwissen für Design und Wartung
  • Jede Nachrichtenseite erfordert ein dediziertes Scraping-Skript
  • Sonderfälle (z. B. aktuelle Artikel) können eine Herausforderung darstellen

Ansatz Nr. 1: Verwendung von KI für News-Scraping

Das Konzept besteht darin, KI zu nutzen, um die schwere Arbeit für Sie zu erledigen. Dies kann entweder durch den direkten Einsatz von Premium-LLM-Tools – wie die neuesten Versionen von ChatGPT mit Crawling-Funktionen – oder durch Integration von KI-Modellen in Ihr Skript erfolgen. Im letzteren Fall benötigen Sie ebenfalls technische Fachkenntnisse sowie die Fähigkeit, ein Basis-Skript zu schreiben.

Nachfolgend die typischen Schritte des KI-gestützten News-Scraping-Prozesses:

  1. Datenerfassung: Rufen Sie den HTML-Code der Zielseite mit einem HTTP-Client ab Bei Verwendung eines Tools wie ChatGPT mit Crawling-Funktionen ist dieser Schritt bereits automatisiert, sodass Sie nur noch die URL der Nachricht übergeben müssen.
  2. Vorverarbeitung der Daten: Wenn Sie mit HTML arbeiten, bereinigen Sie den Inhalt, bevor Sie ihn an die KI weitergeben. Dies könnte das Entfernen unnötiger Skripte, Anzeigen oder Stile bedeuten. Konzentrieren Sie sich auf aussagekräftige Elemente der Seite, wie den Titel, den Autorennamen und den Hauptteil des Artikels.
  3. Daten zum KI-Modell senden: Bei Tools wie ChatGPT mit Browsing-Funktionen übermitteln Sie lediglich die URL des Artikels zusammen mit einer gut formulierten Aufforderung. Die KI analysiert die Seite und gibt strukturierte Daten zurück. Als Alternative können Sie den bereinigten HTML-Inhalt an das KI-Modell weiterleiten und genaue Anweisungen zur Extraktion der Daten erteilen.
  4. Verarbeitung der KI-Ausgabe: Die Antwort der KI ist oft nicht oder nur teilweise strukturiert. Verwenden Sie Ihr Skript, um die Ausgabe in das gewünschte Format zu verarbeiten und zu formatieren.
  5. Export der gescrapten Daten: Sichern Sie die strukturierten Daten in Ihrem bevorzugten Format, sei es in einer Datenbank, einer CSV-Datei oder einer anderen Speicherlösung.

Weitere Informationen finden Sie in unserem Artikel zur Nutzung von KI für Web-Scraping.

Ansatz Nr. 2: Erstellung eines News-Scraping-Skripts

Um einen News-Scraper manuell zu erstellen, müssen Sie sich zunächst mit der Ziel-Website vertraut machen. Inspizieren Sie die Nachrichtenseite, um deren Struktur zu verstehen, welche Daten Sie scrapen können und welche Scraping-Tools zu verwenden sind.

Bei einfachen Nachrichtenseiten dürfte dieses Duo ausreichen.

  • Requests: Eine Python-Bibliothek zum Senden von HTTP-Anfragen. Mithilfe dieser Bibliothek können Sie den rohen HTML-Inhalt einer Webseite abrufen.
  • Beautiful Soup ist eine Python-Bibliothek zum Parsen von HTML- und XML-Dokumenten. Sie dient der Navigation und Extraktion von Daten aus der HTML-Struktur der Webseite. Erfahren Sie mehr in unserem Leitfaden zu Beautiful-Soup-Scraping.

Sie können sie in Python mit installieren:

pip install requests beautifulsoup4

Für Nachrichtenseiten, die Anti-Bot-Technologien einsetzen oder die Ausführung von JavaScript erfordern, sind Tools zur Browser-Automatisierung wie Selenium zu verwenden. Weitere Anweisungen finden Sie in unserem Leitfaden zu Selenium-Scraping.

Sie können Selenium in Python mit installieren:

pip install selenium

In diesem Fall ist der Prozess wie folgt:

  1. Verbindung zur Zielseite herstellen: Rufen Sie den HTML-Code der Webseite ab und parsen Sie diesen.
  2. Auswahl der gewünschten Elemente: Identifizieren Sie die entsprechenden Elemente (z. B. Titel, Inhalt) auf der Seite.
  3. Extrahieren der Daten: Schöpfen Sie die gewünschten Informationen aus diesen Elementen.
  4. Bereinigung der gescrapten Daten: Verarbeiten Sie die Daten, um eventuell unnötige Inhalte zu entfernen.
  5. Export der gescrapten Daten von Nachrichtenartikeln: Sichern Sie die Daten in Ihrem bevorzugten Format, z. B. JSON oder CSV.

In den folgenden Kapiteln finden Sie Beispiele für Python-Skripte für News-Scraping, um Daten von CNN, Reuters und BBC zu extrahieren!

CNN-Scraping

Gewünschter Nachrichtenartikel: „Der kühle Nordosten wird von einem arktischen Sturm heimgesucht, der auf das Thanksgiving-Wochenende zusteuert

Der CNN-Artikel, den wir scrapen wollen

CNN hat keine speziellen Anti-Scraping-Maßnahmen eingerichtet. Daher reicht ein einfaches Skript, das Requests und Beautiful Soup verwendet, völlig aus:

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)

Sobald Sie das Skript ausführen, erzeugt es eine JSON-Datei, die Folgendes enthält:

{
    "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)"
}

Beeindruckend! Sie haben gerade CNN gescraped.

Reuters-Scraping

Gewünschter Nachrichtenartikel: „Macron lobt Kunsthandwerker für die Restaurierung der Kathedrale Notre-Dame in Paris“ .

Beachten Sie, dass Reuters eine spezielle Anti-Bot-Lösung verwendet, welche sämtliche Anfragen blockiert, die nicht von einem Browser stammen. Beim Versuch, eine automatisierte Anfrage mit Requests oder einem anderen Python-HTTP-Client zu stellen, wird Ihnen die folgende Fehlerseite ausgegeben:

<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>

Deshalb müssen Sie ein Browser-Automatisierungstool wie Selenium verwenden, um Nachrichtenartikel von Reuters zu scrapen. Und das geschieht folgendermaßen:

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)

Wenn Sie das obige Skript ausführen und nicht blockiert werden, erhalten Sie die folgende  article.json- Datei:

{
    "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)"
}

Wunderbar! Sie haben gerade Reuters gescraped.

BBC-Scraping

Gewünschter Nachrichtenartikel: „Schwarzer Freitag: Wie Sie Schnäppchen aufspüren und nicht abgezockt werden

Der BBC-Artikel, den wir scrapen werden

Genau wie CNN verfügt auch BBC über keine speziellen Anti-Bot-Lösungen. Daher genügt ein einfaches Scraping-Skript, das den HTTP-Client und das HTML-Parser-Duo verwendet:

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)

Sobald Sie das Skript ausführen, erhalten Sie diese article.json- Datei:

{
    "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)"
}

Fantastisch! Sie haben gerade BBC gescraped.

Herausforderungen beim News-Scraping und deren Bewältigung

In den obigen Beispielen haben wir uns auf einige wenige Nachrichtenseiten beschränkt und lediglich den Titel sowie den Hauptinhalt aus deren Artikeln extrahiert. Diese Schlichtheit stellte das News-Scraping als einen einfachen Prozess dar. In Wirklichkeit ist das weitaus komplexer, da die meisten Nachrichten-Websites Bots aktiv aufspüren und blockieren:

CAPTCHA bei The Wall Street Journal

Einige Herausforderungen, die berücksichtigt werden müssen, sind:

  • Stellen Sie sicher, dass die gescrapten Artikel ihre korrekte Überschriftenstruktur beibehalten
  • Scrapen Sie nicht nur Titel und Hauptinhalte, sondern auch Metadaten wie Tags, Autoren und Veröffentlichungsdaten.
  • Automatisieren Sie den Scraping-Prozess, um mehrere Artikel auf verschiedenen Websites auf effiziente Weise zu verarbeiten.

Zur Bewältigung dieser Herausforderungen können Sie Folgendes tun:

  • Fortgeschrittene Techniken erlernen: Lesen Sie unseren Leitfaden zur Umgehung von CAPTCHA mit Python und verschaffen Sie sich anhand von Scraping-Tutorials praktische Tipps.
  • Verwendung fortschrittlicher Automatisierungstools: Nutzen Sie robuste Tools wie Playwright Stealth zum Scraping von Websites mit Anti-Bot-Mechanismen.

Dennoch ist der Einsatz einer speziellen News-Scraper-API nach wie vor die beste Lösung.

Die News-Scraper-API von Bright Data bietet eine umfassende und effiziente Lösung zum Scrapen von Top-Nachrichtenquellen wie BBC, CNN, Reuters und Google News. Mit dieser API können Sie Folgendes:

  • Extrahieren strukturierter Daten wie IDs, URLs, Schlagzeilen, Autoren, Themen und vieles mehr
  • Skalierung Ihrer Scraping-Projekte, ohne sich Gedanken über Infrastruktur, Proxy-Server oder Website-Sperren machen zu müssen
  • Vergessen Sie Blockaden und Unterbrechungen

Rationalisieren Sie Ihr News-Scraping-Prozess und widmen Sie sich dem, was zählt – der Datenanalyse!

Fazit

In diesem Artikel haben Sie gelernt, was ein News-Scraper ist und welche Art von Daten damit aus Nachrichtenartikeln abgerufen werden können. Zudem haben Sie gesehen, wie Sie einen News-Scraper entweder mit einer KI-basierten Lösung oder mit manuellen Skripten erstellen können.

Ganz gleich, wie ausgeklügelt Ihr News-Scraping-Skript auch sein mag, die meisten Websites können automatisierte Aktivitäten erkennen und Ihren Zugriff blockieren. Das Problem lässt sich mit einer speziellen News-Scraper-API lösen, die eigens für die zuverlässige Extraktion von Nachrichtendaten aus verschiedenen Plattformen entwickelt wurde.

Diese APIs liefern für jede Nachrichtenquelle maßgeschneiderte, strukturierte und umfassende Daten:

  • CNN-Scraper-API: Extrahieren Sie Daten wie Schlagzeilen, Autoren, Themen, Veröffentlichungsdaten, Inhalte, Bilder, verwandte Artikel und vieles mehr.
  • Google-News-Scraper-API: Erfassen Sie Daten wie Schlagzeilen, Themen, Kategorien, Autoren, Veröffentlichungsdaten, Quellen und vieles mehr.
  • Reuters-Scraper-API: Rufen Sie Daten wie IDs, URLs, Autoren, Schlagzeilen, Themen, Veröffentlichungsdaten und vieles mehr ab.
  • BBC-Scraper-API: Erheben Sie Details wie Schlagzeilen, Autoren, Themen, Veröffentlichungsdaten, Inhalte, Bilder, verwandte Artikel und vieles mehr.

Sollten Sie keinen eigenen Scraper erstellen wollen, können Sie unsere einsatzbereiten Nachrichtendatensätze in Betracht ziehen. Diese Datensätze sind vorkompiliert und enthalten umfassende Datensätze:

  • BBC Nnews: Ein Datensatz, der mit Zehntausenden von Datensätzen sämtliche wichtigen Datenpunkte abdeckt.
  • CNN News: Ein Datensatz, der mit Hunderttausenden von Datensätzen sämtliche wichtigen Datenpunkte umfasst.
  • Google News: Ein Datensatz, der mit Zehntausenden von Datensätzen sämtliche wichtigen Datenpunkte abdeckt.
  • BBC Nnews: Ein Datensatz, der mit Hunderttausenden von Datensätzen sämtliche wichtigen Datenpunkte umfasst.

Erkunden Sie all unsere Datensätze für Journalisten.

Erstellen Sie noch heute ein kostenloses Bright-Data-Konto, um unsere Scraper-APIs zu testen bzw. unsere Datensätze zu erkunden.

Keine Kreditkarte erforderlich