Wie man mit Python Daten von Google Trends abgreift

Bemerkungen: 0

Der Einsatz von Python und Playwright zum Scrapen von Daten aus Google Trends ermöglicht eine detaillierte Untersuchung der Popularität von Schlüsselwörtern und die Beobachtung von Trendverschiebungen im Laufe der Zeit. Dieser Ansatz liefert wichtige Erkenntnisse für die Marketing-Analyse.

Voraussetzungen

Bevor Sie in den Code eintauchen, sollten Sie sicherstellen, dass Sie die folgenden Tools installiert haben:

  • Python 3.7+;
  • Playwright-Bibliothek.

Sie können Playwright mit pip installieren:

pip install playwright

Um Playwright mit asynchronem Code zu verwenden, benötigen Sie außerdem die asyncio-Bibliothek, die standardmäßig in Python 3.7+ enthalten ist.

Konfiguration von Playwright für die Arbeit mit Google Trends

Wir werden Playwright, ein leistungsstarkes Browser-Automatisierungstool, verwenden, um auf der Google Trends-Website zu navigieren und CSV-Dateien mit Trenddaten herunterzuladen. Dieses Tutorial wird Sie durch den gesamten Prozess führen.

Playwright-Installation

Stellen Sie zunächst sicher, dass Playwright installiert ist:

playwright install

Wenn Sie nicht alle Browser installieren möchten, verwenden Sie einfach diesen Befehl, um nur den Chromium-Browser zu installieren.

playwright install chromium

Proxy-Konfiguration

Beim Scrapen von Plattformen wie Google, die aktiv gegen Bot-Aktivitäten vorgehen, ist die Verwendung von Proxys unerlässlich. Proxys ermöglichen eine IP-Rotation und verringern so das Risiko, blockiert zu werden. In unserem Skript verwenden wir private Proxys, um unsere Anfragen weiterzuleiten.

proxy = {
    "server": "IP:PORT",
    "username": "your_username",
    "password": "your_password"
}

Ersetzen Sie die Variablen IP, PORT, Benutzername und Passwort durch die tatsächlichen Daten Ihres Proxyservers.

Schrittweiser Ablauf der Arbeit mit Playwright

In diesem Beispiel navigieren wir zunächst zu google.com, um mögliche Sperren zu umgehen, bevor wir die Seite Google Trends aufrufen. Dies geschieht, um das normale Nutzerverhalten zu imitieren und eine Entdeckung zu vermeiden.

Schritt 1: Vorbereitungen für die Arbeit mit Google Trends

Dieser Schritt beinhaltet vorbereitende Maßnahmen, um zu verhindern, dass man von Google markiert und blockiert wird:

  • Starten des Browsers: Dies beinhaltet das Starten einer Instanz des Chromium-Browsers, der mit Proxy-Einstellungen konfiguriert ist. Die Verwendung von Proxys hilft dabei, die Wahrscheinlichkeit einer Entdeckung zu verringern, indem die Scraping-Aktivität als reguläre Browsernutzung getarnt wird;
  • Navigieren zu Google: Durch den ersten Zugriff auf google.com werden die Tracking-Systeme von Google an die Anwesenheit eines neuen Nutzers gewöhnt. Dieser einfache Navigationsschritt senkt die Wahrscheinlichkeit, dass nachfolgende Aktivitäten als Bot-ähnlich eingestuft werden, wodurch eine sofortige Sperrung vermieden wird.
import asyncio
from playwright.async_api import Playwright, async_playwright

async def run(playwright: Playwright) -> None:
    # Starten des Browsers mit Proxy-Einstellungen
    browser = await playwright.chromium.launch(headless=False, proxy={
        "server": "IP:PORT",
        "username": "your_username",
        "password": "your_password"
    })
    
    # Erstellen eines neuen Browserkontextes
    context = await browser.new_context()
    
    # Öffnen einer neuen Seite
    page = await context.new_page()
    
    # Besuch bei Google, um normales Surfen zu imitieren
    await page.goto("https://google.com")

Schritt 2: Navigieren und Herunterladen von Daten aus Google Trends

Als Nächstes navigieren Sie direkt zu der Seite von Google Trends, auf der sich die benötigten Daten befinden. Google Trends bietet die Möglichkeit, die Daten direkt im CSV-Format herunterzuladen, was den Extraktionsprozess erleichtert. Klicken Sie automatisch auf die Schaltfläche "Download", um den Download der Daten zu starten. Dies ermöglicht die Extraktion von Trenddaten ohne manuelles Eingreifen. Sobald die Schaltfläche "Herunterladen" sichtbar wird, sollte die Automatisierung mit dem Anklicken dieser Schaltfläche fortfahren und den Download der CSV-Datei, die die benötigten Trenddaten enthält, einleiten.

 # Zu Google Trends navigieren
    await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")
    
    # Warten auf den Download-Button und Anklicken desselben
    async with page.expect_download() as download_info:
        await page.get_by_role("button", name="file_download").first.click()
    
    # Handhabung des Downloads
    download = await download_info.value
    print(download.suggested_filename)

Schritt 3: Speichern der Daten und Beenden der Sitzung

Die heruntergeladene CSV-Datei wird automatisch in einem bestimmten Verzeichnis auf Ihrem lokalen Gerät gespeichert.

 # Speichern der heruntergeladenen Datei
    await download.save_as("/path/to/save/" + download.suggested_filename)

Komplettes Code-Beispiel

Hier ist der vollständige Code zum Herunterladen von Google Trends-Daten als CSV-Datei mit Playwright:

import asyncio
import os
import re
from playwright.async_api import Playwright, async_playwright


async def run(playwright: Playwright) -> None:
   # Browser mit Proxy-Einstellungen starten
   browser = await playwright.chromium.launch(headless=False, proxy={
       "server": "IP:PORT",
       "username": "your_username",
       "password": "your_password"
   })

   # Erstellen Sie einen neuen Browser-Kontext
   context = await browser.new_context()

   # Eine neue Seite öffnen
   page = await context.new_page()

   # Besuchen Sie Google, um nicht entdeckt zu werden
   await page.goto("https://google.com")

   # Zu Google Trends navigieren
   await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")

   # Klicken Sie auf den Download-Button
   async with page.expect_download() as download_info:
       await page.get_by_role("button", name=re.compile(r"file_download")).first.click()

   # Speichern Sie die heruntergeladene Datei
   download = await download_info.value
   destination_path = os.path.join("path/to/save", download.suggested_filename)
   await download.save_as(destination_path)

   # Schließen Sie den Kontext und den Browser
   await context.close()
   await browser.close()


async def main() -> None:
   async with async_playwright() as playwright:
       await run(playwright)


asyncio.run(main())

Mit diesem Leitfaden können Sie effizient Trenddaten herunterladen, die Proxy-Rotation verwalten und Bot-Schutzmechanismen umgehen. Für eine wirksame Umgehung von Blockierungen ist die Verwendung zuverlässiger Proxyserver entscheidend. Empfehlenswert sind Proxys für Privatanwender, die dynamische IP-Adressen anbieten und keine Rotationskonfiguration benötigen. Alternativ sind auch statische ISP-Proxys wirksam; kaufen Sie die erforderliche Anzahl von IPs und richten Sie eine regelmäßige IP-Rotation in Ihrem Skript ein. In beiden Fällen wird das Risiko von Blockierungen und Captcha minimiert, was eine schnellere und reibungslosere Datenauslese ermöglicht.

Bemerkungen:

0 Bemerkungen