Skip to content

Extrahieren Sie Nachrichtendaten mit der Nr. 1 Google News API, einschließlich Top-Meldungen, Publisher-Details, Artikelzusammenfassungen und Trendthemen. Starten Sie jetzt Ihre kostenlose Testversion!

Notifications You must be signed in to change notification settings

bright-data-de/Google-News-Scraper

Repository files navigation

Google News Scraper

Promo

Dieses Repository bietet zwei Methoden, um Nachrichtendaten aus Google News zu sammeln.

  • Kostenlose Methode: Perfekt für kleine Projekte und zum Lernen
  • Google News API: Ideal für groß angelegte, zuverlässige Datenextraktion in Echtzeit

Table of Contents

Method 1: Free Google News Scraper

image

Dieses kostenlose Tool ermöglicht es Ihnen, Nachrichtenartikel basierend auf jedem Thema zu sammeln, das Sie interessiert. Sie erhalten alles von Überschriften bis zu Veröffentlichungsdaten – alles sauber organisiert.

Prerequisites

  • Python 3.9+
  • Zwei zentrale Packages:

Installation

  1. Klonen Sie das Repository:

    git clone https://github.com/bright-data-de/Google-News-Scraper.git
  2. Wechseln Sie in das Projektverzeichnis:

    cd Google-News-Scraper
  3. Installieren Sie die erforderlichen Abhängigkeiten:

    pip install -r requirements.txt

Usage

  1. Wechseln Sie in das Verzeichnis free_scraper und öffnen Sie main.py

  2. Definieren Sie Ihre Suchbegriffe in der Datei:

    search_terms = [
        "artificial intelligence",
        "climate change",
        "space exploration",
        # Add more search terms as needed
    ]
  3. Führen Sie den Scraper aus:

    python main.py

Output

Der Scraper generiert JSON-Dateien:

  • Einzelne JSON-Dateien für jeden Suchbegriff
  • Eine Datei combined_results.json, die Daten aus allen Suchbegriffen enthält

Jeder Artikel in der JSON-Ausgabe enthält:

{
    "title": "OpenAI launches full o1 model with image uploads and analysis, debuts ChatGPT Pro - VentureBeat",
    "link": "https://news.google.com/rss/articles/CBMipgFBVV95cUxQTTVmS1I4aW1QanZXTnBfa2tBR3d0Y2JzNjJJNldBZTd1TVVfRmpxaUM3bGJld3RycXhPbU8wM1loT0JGd2JDRzFmU1pLU3FSbkRRZ0FPY29INmdhU1RsWXFqXzdLTjNCbU5ES3pIQXZLbTVmMWVhc0FqVlljeWNPOHZMeFlXV2F5Q21ac0lSZVhIOHlnS05sdkR5ZjhJTU9HazJ6MWJR?oc=5",
    "publication_date": "Thu, 05 Dec 2024 18:00:00 GMT",
    "source": "VentureBeat",
    "source_url": "https://venturebeat.com",
    "guid": "CBMipgFBVV95cUxQTTVmS1I4aW1QanZXTnBfa2tBR3d0Y2JzNjJJNldBZTd1TVVfRmpxaUM3bGJld3RycXhPbU8wM1loT0JGd2JDRzFmU1pLU3FSbkRRZ0FPY29INmdhU1RsWXFqXzdLTjNCbU5ES3pIQXZLbTVmMWVhc0FqVlljeWNPOHZMeFlXV2F5Q21ac0lSZVhIOHlnS05sdkR5ZjhJTU9HazJ6MWJR",
}

👉 Sie finden eine vollständige Beispielausgabe in unserem Verzeichnis free_scraper/data/.

Common Scraping Challenges

Das Scraping von Daten aus Google News kann ziemlich herausfordernd sein. Hier sind einige häufige Probleme, auf die Sie stoßen können:

  1. CAPTCHA und Anti-Bot-Mechanismen: Google verwendet häufig CAPTCHAs oder Mechanismen zur Ratenbegrenzung, um Bots am Zugriff auf Inhalte zu hindern.
  2. Skalierbarkeit: Das Scraping großer Datenmengen oder Scraping mit hoher Frequenz kann kostenlose Scraper überfordern.
  3. Globaler und lokalisierter Zugriff auf Nachrichten: Das Anpassen von Scrapern für verschiedene Regionen und Sprachen erfordert häufig erheblichen Aufwand und manuelle Anpassungen.

Method 2: Bright Data Google News API

Möchten Sie etwas Robusteres? Dann sprechen wir über Bright Data's Google News API. Hier ist der Grund, warum sie es wert ist:

Key Benefits

  • Keine Infrastruktur-Kopfschmerzen: Vergessen Sie Proxies und CAPTCHAs
  • Für Skalierung entwickelt: Bewältigt hohen Traffic mit außergewöhnlicher Performance
  • Globale Reichweite: Holen Sie News aus jedem Land, in jeder Sprache
  • Datenschutz zuerst: GDPR- & CCPA-konform
  • Bezahlen nach Erfolg: Es werden nur erfolgreiche Anfragen berechnet
  • Testen vor dem Kauf: 20 kostenlose API-Aufrufe, um alles auszuprobieren

Getting Started with the Google News API

Eine ausführliche Anleitung zum Einrichten der Google News API finden Sie in unserer Step-by-Step Setup Guide.

Key Input Parameters

Parameter Required? Description Example
url Yes Basis-Google-News-URL news.google.com
keyword Yes Ihr Suchthema "ChatGPT"
country No Woher die News bezogen werden sollen "US"
language No Welche Sprache Sie möchten "en"

Sample Result

So sieht die API-Antwort aus:

{
    "url": "https://www.tomsguide.com/news/live/12-days-of-openai-live-blog-chatgpt-sora",
    "title": "12 Days of OpenAI Day 2 LIVE: o1 full is here and every new ChatGPT AI announcement as it happens",
    "publisher": "Tom's Guide",
    "date": "2024-12-06T20:54:01.000Z",
    "category": null,
    "keyword": "chatgpt",
    "country": "US",
    "image": "https://news.google.com/api/attachments/CC8iK0NnNW9SbTFVTWtkNGFGSjJSVGhGVFJDb0FSaXNBaWdCTWdhQmtJcWpOQWM=-w200-h112-p-df-rw",
    "timestamp": "2024-12-08T10:06:05.122Z",
    "input": {
        "url": "https://news.google.com/",
        "keyword": "chatgpt",
        "country": "US",
        "language": "en",
    },
}

👉 Sie finden eine vollständige Beispielausgabe in unserer Datei news_scraper_output.json.

Ready-to-Use Python Code

Hier ist ein Script, mit dem Sie starten können:

import requests
import json
import time


class BrightDataNews:
    def __init__(self, api_token):
        self.api_token = api_token
        self.headers = {
            "Authorization": f"Bearer {api_token}",
            "Content-Type": "application/json",
        }
        self.dataset_id = "gd_lnsxoxzi1omrwnka5r"

    def collect_news(self, search_queries):
        """
        Collect Google News articles using BrightData API
        """
        # 1. Trigger data collection
        print("Starting news collection...")
        trigger_response = self._trigger_collection(search_queries)
        snapshot_id = trigger_response.get("snapshot_id")
        print(f"Snapshot ID: {snapshot_id}")

        # 2. Wait for data to be ready
        print("Waiting for data...")
        while True:
            status = self._check_status(snapshot_id)
            print(f"Status: {status}")

            if status == "ready":
                # Check if data is actually available
                data = self._get_data(snapshot_id)
                if data and len(data) > 0:
                    break
            time.sleep(10)  # Wait 10 seconds before next check
        # 3. Get and save the data
        print("Saving data...")
        filename = f"news_scraper_output.json"
        with open(filename, "w", encoding="utf-8") as f:
            json.dump(data, f, indent=2, ensure_ascii=False)
        print(f"✓ Data saved to {filename}")
        print(f"✓ Collected {len(data)} news articles")
        return data

    def _trigger_collection(self, search_queries):
        """Trigger news data collection"""
        response = requests.post(
            "https://api.brightdata.com/datasets/v3/trigger",
            headers=self.headers,
            params={"dataset_id": self.dataset_id, "include_errors": "true"},
            json=search_queries,
        )
        return response.json()

    def _check_status(self, snapshot_id):
        """Check collection status"""
        response = requests.get(
            f"https://api.brightdata.com/datasets/v3/progress/{snapshot_id}",
            headers=self.headers,
        )
        return response.json().get("status")

    def _get_data(self, snapshot_id):
        """Get collected data"""
        response = requests.get(
            f"https://api.brightdata.com/datasets/v3/snapshot/{snapshot_id}",
            headers=self.headers,
            params={"format": "json"},
        )
        return response.json()

So verwenden Sie es:

# Initialize the client
news_client = BrightDataNews("<YOUR_API_TOKEN>")

# Define what you want to collect
queries = [
    {
        "url": "https://news.google.com/",
        "keyword": "artificial intelligence startups",
        "country": "US",
        "language": "en",
    },
    {
        "url": "https://news.google.com/",
        "keyword": "tech industry layoffs",
        "country": "US",
        "language": "en",
    },
]

# Start collection
try:
    news_data = news_client.collect_news(queries)
    print(f"Successfully collected {len(news_data)} articles")
except Exception as e:
    print(f"Collection failed: {str(e)}")

Understanding the API Implementation

  1. Einrichten Ihres API Token
    • Als Erstes benötigen Sie ein API Token
    • Falls Sie noch keines haben, sehen Sie sich unseren setup guide an
  2. Starten der Sammlung
    • Übergeben Sie Ihre Such-Parameter an die API
    • Sie erhalten eine snapshot_id zurück
  3. Fortschritt überwachen
    • Der Prozess dauert ein paar Minuten
    • Unser Code prüft den Status automatisch:
      • "running" = Ihre Daten werden noch gesammelt
      • "ready" = Zeit, Ihre Ergebnisse abzurufen!
  4. Abrufen Ihrer Daten
    • Sobald der Status "ready" anzeigt, rufen wir Ihre Ergebnisse ab und speichern sie
    • Die Daten kommen in einem sauberen JSON-Format
    • Jeder Artikel enthält alle Felder, die wir zuvor besprochen haben

Customizing Your Data Collection

Sie können die folgenden Parameter verwenden, um Ihre Ergebnisse feinzujustieren:

Parameter Type Description Example
limit integer Maximale Ergebnisse pro Input limit=10
include_errors boolean Fehlerberichte zur Fehlersuche abrufen include_errors=true
notify url Webhook-Benachrichtigungs-URL, um bei Abschluss benachrichtigt zu werden notify=https://notify-me.com/
format enum Ausgabeformat (z. B. JSON, NDJSON, JSONL, CSV) format=json

💡 Pro Tip: Sie können außerdem auswählen, ob die Daten an einen external storage geliefert werden sollen oder ob sie an einen webhook geliefert werden sollen.


Benötigen Sie weitere Details? Sehen Sie sich die official API docs an.

About

Extrahieren Sie Nachrichtendaten mit der Nr. 1 Google News API, einschließlich Top-Meldungen, Publisher-Details, Artikelzusammenfassungen und Trendthemen. Starten Sie jetzt Ihre kostenlose Testversion!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages