Как извлечь данные из 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 комментариев