Jak zeskrobać dane z Google Trends za pomocą Pythona

Komentarze: 0

Wykorzystanie Pythona i Playwright do pobierania danych z Google Trends umożliwia szczegółowe badanie popularności słów kluczowych i monitorowanie zmian trendów w czasie. Takie podejście dostarcza kluczowych informacji dla analityki marketingowej.

Wymagania wstępne

Zanim zagłębisz się w kod, upewnij się, że masz zainstalowane następujące narzędzia:

  • Python 3.7+;
  • Biblioteka Playwright.

Playwright można zainstalować za pomocą pip:

pip install playwright

Do korzystania z Playwright z kodem asynchronicznym potrzebna jest również biblioteka asyncio, która jest domyślnie dołączona do Pythona 3.7+.

Konfiguracja Playwright do pracy z Google Trends

Użyjemy Playwright, potężnego narzędzia do automatyzacji przeglądarki, aby poruszać się po witrynie Google Trends i pobierać pliki CSV zawierające dane trendów. Ten samouczek poprowadzi Cię przez cały proces.

Instalacja Playwright

Najpierw upewnij się, że Playwright jest zainstalowany:

playwright install

Jeśli nie chcesz instalować wszystkich przeglądarek, wystarczy użyć tego polecenia, aby zainstalować tylko przeglądarkę chromium.

playwright install chromium

Konfiguracja proxy

Podczas skrobania platform takich jak Google, które aktywnie przeciwdziałają aktywności botów, korzystanie z serwerów proxy jest niezbędne. Serwery proxy umożliwiają rotację adresów IP, pomagając zmniejszyć ryzyko zablokowania. W naszym skrypcie wykorzystujemy prywatne serwery proxy do kierowania naszych żądań.

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

Zastąp zmienne IP, PORT, nazwa użytkownika i hasło rzeczywistymi danymi z serwera proxy.

Proces pracy z Playwright krok po kroku

W tym przykładzie najpierw przechodzimy do google.com, aby ominąć wszelkie potencjalne blokady przed przejściem do strony Google Trends. Ma to na celu naśladowanie normalnego zachowania użytkownika i uniknięcie wykrycia.

Krok 1: Przygotowanie do pracy z Google Trends

Ten krok obejmuje wstępne działania, aby zapobiec oflagowaniu i zablokowaniu przez Google:

  • Uruchomienie przeglądarki: obejmuje to uruchomienie instancji przeglądarki Chromium skonfigurowanej z ustawieniami proxy. Korzystanie z serwerów proxy pomaga zmniejszyć szanse wykrycia, ukrywając aktywność skrobania jako zwykłe korzystanie z przeglądarki;
  • Nawigacja do Google: wchodząc najpierw na google.com, aklimatyzuje systemy śledzenia Google do obecności tego, co postrzega jako nowego użytkownika. Ten prosty krok nawigacyjny zmniejsza prawdopodobieństwo, że kolejne działania zostaną sklasyfikowane jako podobne do bota, unikając w ten sposób natychmiastowego blokowania.
import asyncio
from playwright.async_api import Playwright, async_playwright

async def run(playwright: Playwright) -> None:
    # Uruchamianie przeglądarki z ustawieniami proxy
    browser = await playwright.chromium.launch(headless=False, proxy={
        "server": "IP:PORT",
        "username": "your_username",
        "password": "your_password"
    })
    
    # Tworzenie nowego kontekstu przeglądarki
    context = await browser.new_context()
    
    # Otwieranie nowej strony
    page = await context.new_page()
    
    # Odwiedzanie Google w celu naśladowania normalnego przeglądania
    await page.goto("https://google.com")

Krok 2: Nawigacja i pobieranie danych z Google Trends

Następnie przejdź bezpośrednio do strony Google Trends, na której znajdują się wymagane dane. Google Trends zapewnia opcje pobierania danych bezpośrednio w formacie CSV, co ułatwia proces ekstrakcji. Zautomatyzuj czynność klikania przycisku "Pobierz", aby rozpocząć pobieranie danych. Pozwala to na wyodrębnienie danych trendów bez ręcznej interwencji. Gdy przycisk "Pobierz" stanie się widoczny, automatyzacja powinna przejść do jego kliknięcia, inicjując pobieranie pliku CSV zawierającego potrzebne dane trendów.

 # Nawigacja do Google Trends
    await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")
    
    # Oczekiwanie na przycisk pobierania i kliknięcie go
    async with page.expect_download() as download_info:
        await page.get_by_role("button", name="file_download").first.click()
    
    # Obsługa pobierania
    download = await download_info.value
    print(download.suggested_filename)

Krok 3: Zapisanie danych i zakończenie sesji

Pobrany plik CSV jest automatycznie zapisywany w określonym katalogu na urządzeniu lokalnym.

 # Zapisywanie pobranego pliku
    await download.save_as("/path/to/save/" + download.suggested_filename)

Pełny przykład kodu

Oto kompletny kod do pobierania danych Google Trends jako pliku CSV przy użyciu Playwright:

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


async def run(playwright: Playwright) -> None:
   # Uruchom przeglądarkę z ustawieniami proxy
   browser = await playwright.chromium.launch(headless=False, proxy={
       "server": "IP:PORT",
       "username": "your_username",
       "password": "your_password"
   })

   # Utwórz nowy kontekst przeglądarki
   context = await browser.new_context()

   # Otwórz nową stronę
   page = await context.new_page()

   # Odwiedź Google, aby uniknąć wykrycia
   await page.goto("https://google.com")

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

   # Kliknij przycisk pobierania
   async with page.expect_download() as download_info:
       await page.get_by_role("button", name=re.compile(r"file_download")).first.click()

   # Zapisz pobrany plik
   download = await download_info.value
   destination_path = os.path.join("path/to/save", download.suggested_filename)
   await download.save_as(destination_path)

   # Zamknij kontekst i przeglądarkę
   await context.close()
   await browser.close()


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


asyncio.run(main())

Postępując zgodnie z tym przewodnikiem, można skutecznie pobierać dane trendów, zarządzać rotacją proxy i omijać mechanizmy ochrony przed botami. Aby skutecznie unikać blokowania, kluczowe jest korzystanie z niezawodnych serwerów proxy. Zdecydowanie zalecane są rezydencjalne serwery proxy, które oferują dynamiczne adresy IP i nie wymagają konfiguracji rotacji. Alternatywnie, statyczne serwery proxy ISP są również skuteczne; należy zakupić wymaganą liczbę adresów IP i skonfigurować regularną rotację adresów IP w skrypcie. Każdy wybór zapewnia minimalne ryzyko zablokowania i captcha, ułatwiając szybsze i płynniejsze pobieranie danych.

Komentarze:

0 komentarze