Як витягти дані з Google Trends за допомогою Python

Коментарі: 0

Витяг даних з Google Trends з використанням Python і Playwright дає змогу глибоко аналізувати популярність ключових слів і стежити за змінами трендів протягом часу. Цей метод дає змогу отримати цінні дані для маркетингового аналізу.

Підготовка до встановлення та налаштування

Перед початком роботи переконайтеся, що у вас встановлено такі інструменти:

  • Python версії 3.7 або вище;
  • Бібліотека Playwright.

Встановіть Playwright за допомогою pip:

pip install playwright

Для використання Playwright з асинхронним кодом також знадобиться бібліотека asyncio, яка вже включена в Python версії 3.7 і вище.

Налаштування Playwright для роботи з Google Trends

У цьому посібнику використовується Playwright, інструмент для автоматизації браузера, який дасть змогу перейти на сайт Google Trends і завантажити файли CSV з даними про тренди.

Ініціалізація Playwright

Щоб встановити необхідні браузери, запустіть команду:

playwright install

Для економії місця можна встановити тільки Chromium, якщо це доцільно для планованих завдань:

playwright install chromium

Налаштування проксі

Використання проксі критично при скрапінгу платформ, таких як Google, які активно борються з ботами. Проксі дають змогу проводити ротацію IP-адрес, знижуючи ризик блокувань. У коді ми використовуємо приватні проксі для маршрутизації запитів:

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

Змінні IP, PORT, username, password мають бути замінені на реальні дані проксі.

Покроковий процес роботи з Playwright

У цьому прикладі ми спочатку переходимо на google.com, щоб уникнути можливих блокувань, перш ніж перейти на сторінку Google Trends. Це робиться для імітації поведінки звичайного користувача та уникнення виявлення.

Крок 1: Підготовка до роботи з Google Trends

Цей крок охоплює попередні дії, щоб уникнути блокувань з боку Google.

  • Запуск браузера: У даному процесі використовується екземпляр браузера Chromium з активованими проксі-налаштуваннями для уникнення блокування з боку Google.
  • Перехід на Google: Відвідування google.com слугує запобіжним заходом, даючи змогу алгоритмам Google адаптуватися до нового користувача і знизити ризик швидкого визначення скрипта як бота.
import asyncio
from playwright.async_api import Playwright, async_playwright

async def run(playwright: Playwright) -> None:
    # Запуск браузера з налаштуваннями проксі
    browser = await playwright.chromium.launch(headless=False, proxy={
        "server": "IP:PORT",
        "username": "your_username",
        "password": "your_password"
    })
    
    # Створення нового контексту браузера
    context = await browser.new_context()
    
    # Відкриття нової сторінки
    page = await context.new_page()
    
    # Перехід на Google для імітації звичайного серфінгу
    await page.goto("https://google.com")

Крок 2: Навігація та скачування даних з Google Trends

Наступним кроком є перехід на сторінку Google Trends для доступу до потрібних даних, оминаючи потенційні обмеження. На сторінках Google Trends надано можливість скачування даних у форматі CSV. Автоматизація натискання кнопки "Завантажити" дає змогу витягувати дані без ручного втручання. Після появи кнопки "Завантажити" натискаємо на неї для ініціації завантаження файлу CSV, що містить трендові дані, які цікавлять.

 # Навігація на Google Trends
    await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")
    
    # Очікування кнопки завантаження і клік по ній
    async with page.expect_download() as download_info:
        await page.get_by_role("button", name="file_download").first.click()
    
    # Обробка завантаження
    download = await download_info.value
    print(download.suggested_filename)

Крок 3: Збереження даних і завершення сесії

Завантажений файл CSV зберігається в попередньо заданій директорії на локальному пристрої.

 # Збереження завантаженого файлу
    await download.save_as("/path/to/save/" + download.suggested_filename)

Фінальна версія коду

Ось повний приклад коду для скачування даних Google Trends у вигляді файлу CSV з використанням Playwright:

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


async def run(playwright: Playwright) -> None:
   # Запуск браузера з налаштуваннями проксі
   browser = await playwright.chromium.launch(headless=False, proxy={
       "server": "IP:PORT",
       "username": "your_username",
       "password": "your_password"
   })

   # Створення нового контексту браузера
   context = await browser.new_context()

   # Відкриття нової сторінки
   page = await context.new_page()

   # Перехід на Google для уникнення виявлення
   await page.goto("https://google.com")

   # Перехід до Google Trends
   await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")

   # Натискання на кнопку скачування
   async with page.expect_download() as download_info:
       await page.get_by_role("button", name=re.compile(r"file_download")).first.click()

   # Збереження завантаженого файлу
   download = await download_info.value
   destination_path = os.path.join("path/to/save", download.suggested_filename)
   await download.save_as(destination_path)

   # Закриття контексту і браузера
   await context.close()
   await browser.close()


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


asyncio.run(main())

Дотримуючись інструкцій, ви зможете ефективно завантажувати трендові дані, керувати ротацією проксі та обходити захист від ботів. Для найбільш ефективного обходу блокувань важливо використовувати надійні проксі-сервери. Оптимальним вибором стануть резидентські проксі, які надають динамічні IP-адреси і не потребують додаткового налаштування їхньої ротації. Як альтернативу, можна використовувати статичні ISP проксі, закупивши необхідну кількість IP-адрес і налаштувавши їхню регулярну зміну в скрипті. Вибір цих проксі-серверів забезпечить низький ризик блокувань і появи капчі, що сприятиме більш швидкому і безперебійному скрапінгу.

Коментарії:

0 Коментаріїв