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.
Zanim zagłębisz się w kod, upewnij się, że masz zainstalowane następujące narzędzia:
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+.
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.
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
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.
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.
Ten krok obejmuje wstępne działania, aby zapobiec oflagowaniu i zablokowaniu przez Google:
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")
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)
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)
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