Витяг даних з Google Trends з використанням Python і Playwright дає змогу глибоко аналізувати популярність ключових слів і стежити за змінами трендів протягом часу. Цей метод дає змогу отримати цінні дані для маркетингового аналізу.
Перед початком роботи переконайтеся, що у вас встановлено такі інструменти:
Встановіть Playwright за допомогою pip:
pip install playwright
Для використання Playwright з асинхронним кодом також знадобиться бібліотека asyncio, яка вже включена в Python версії 3.7 і вище.
У цьому посібнику використовується Playwright, інструмент для автоматизації браузера, який дасть змогу перейти на сайт Google Trends і завантажити файли CSV з даними про тренди.
Щоб встановити необхідні браузери, запустіть команду:
playwright install
Для економії місця можна встановити тільки Chromium, якщо це доцільно для планованих завдань:
playwright install chromium
Використання проксі критично при скрапінгу платформ, таких як Google, які активно борються з ботами. Проксі дають змогу проводити ротацію IP-адрес, знижуючи ризик блокувань. У коді ми використовуємо приватні проксі для маршрутизації запитів:
proxy = {
"server": "IP:PORT",
"username": "your_username",
"password": "your_password"
}
Змінні IP, PORT, username, password мають бути замінені на реальні дані проксі.
У цьому прикладі ми спочатку переходимо на google.com, щоб уникнути можливих блокувань, перш ніж перейти на сторінку Google Trends. Це робиться для імітації поведінки звичайного користувача та уникнення виявлення.
Цей крок охоплює попередні дії, щоб уникнути блокувань з боку 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")
Наступним кроком є перехід на сторінку 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)
Завантажений файл 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-адрес і налаштувавши їхню регулярну зміну в скрипті. Вибір цих проксі-серверів забезпечить низький ризик блокувань і появи капчі, що сприятиме більш швидкому і безперебійному скрапінгу.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Коментарі: 0