Бесплатно доступный инструмент Google Trends предоставляет кладезь поисковых данных, которые могут дать вашему бизнесу преимущество. Собирая эти данные в больших масштабах, вы получаете ценную информацию, позволяющую обойти конкурентов. Это подробное руководство научит вас, как использовать сверхвозможности парсинга Google Trends с помощью Python.
Введение: данные о тенденциях способствуют принятию стратегических решений
Google Trends уравнял правила игры, демократизировав доступ к агрегированным данным по объему поиска. Сообразительные компании все чаще используют Trends для получения уникальной информации, которая поможет принять важные решения:
89% цифровых маркетологов положитесь на «Тенденции» для исследования ключевых слов согласно недавним опросам. Данные об объеме поиска помогают оптимизировать контент и стратегию SEO.
Тенденции помогли Spotify идентифицирует неиспользованные рынки расшириться за счет включения Румынии и Хорватии на основе шаблонов поиска музыки.
Финансовые фирмы, такие как Hedgeye собирайте данные Trends о розничных брендах, чтобы прогнозировать экономические показатели, используя поисковый интерес в качестве сигнала.
Венчурные капиталисты и стартапы используйте «Тенденции» для количественной оценки рыночного спроса на продукты перед запуском и выявления новых возможностей для бизнеса.
Тенденции даже прогнозируемый всплеск случаев заболевания COVID путем выявления растущего интереса к поиску симптомов в конкретных регионах.
Приложения бесконечны, но поиск данных вручную медленный и ограниченный. Именно здесь на помощь приходит парсинг веб-страниц, который автоматизирует процесс и раскрывает реальную мощь Trends.
Настройка веб-скребка Python
Прежде чем выполнять парсинг, давайте пройдемся по ключевым предварительным требованиям и инструментам:
Учиться Python
Для реализации парсера необходимо знание Python. Я рекомендую сначала пройти онлайн-курсы по основам Python и концепциям объектно-ориентированного подхода. Некоторые хорошие стартовые ресурсы:
Обширные библиотеки Python и простой синтаксис делают его идеальным выбором для парсинга веб-страниц.
Библиотеки скраперов
Эти библиотеки Python предоставляют возможности очистки:
Запросы – Отправляет HTTP-запросы для загрузки веб-страниц. Более легкий, чем Selenium.
КрасивыйСуп – Анализирует документы HTML и XML для извлечения данных с помощью селекторов CSS и регулярных выражений.
Селен – Запускает и контролирует браузеры, такие как Chrome и Firefox, для автоматизации. Может обойти проблемы с рендерингом JavaScript.
Scrapy – Полная основа для крупных проектов парсинга с такими инструментами, как пауки, конвейеры и кэширование.
Для Google Trends я рекомендую использовать запросы для получения страниц и BeautifulSoup для анализа HTML. Scrapy — это излишество для парсера одного сайта.
Доверенные
Чтобы замаскировать парсерный трафик, направьте запросы через резидентные прокси-серверы от таких поставщиков, как BrightData, SmartProxy или Oxylabs. Это приводит к тому, что каждый запрос появляется с другого домашнего IP-адреса.
Настройте прокси в запросах, используя библиотеки Python, такие как Py.Socks:
import requests
import socks
proxy = "PROXY_HOST:PORT"
socks.set_default_proxy(socks.SOCKS5, proxy)
socket.socket = socks.socksocket
requests.get(‘http://www.example.com‘)
Ротация прокси является ключом к стабильному и продолжительному парсингу.
Виртуальные среды
Используйте виртуальные среды чтобы изолировать зависимости и настройки парсера от вашей основной установки Python. Распространенный выбор: virtualenv
, pipenv
и Анаконда.
Например:
pip install virtualenv
virtualenv myscraperenv
source myscraperenv/bin/activate
Теперь давайте посмотрим на создание скребка!
Извлечение данных поиска из Google Trends
Веб-приложение Trends отправляет запросы к внутренним API для получения данных поиска. Нам нужно перепроектировать место хранения этих данных внутри HTML и извлечь их.
Давайте пройдемся шаг за шагом:
Получение HTML-страницы
Сначала мы будем использовать запросы для загрузки HTML-страницы:
import requests
url = ‘https://trends.google.com/trends/explore?date=all&q=python‘
response = requests.get(url)
html = response.text
Мы также могли бы интегрировать сюда автоматизацию браузера Selenium для рендеринга JavaScript.
Разбор с помощью BeautifulSoup
Далее мы проанализируем HTML и пройдемся по дереву DOM с помощью BeautifulSoup:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, ‘html.parser‘)
soup
теперь содержит структурированный документ.
Извлечение данных JSON
Данные диаграммы трендов хранятся внутри переменной JavaScript, называемой window.DATA
. Нам нужно извлечь необработанную строку JSON:
data = soup.find(‘script‘, text=lambda t: t.startswith(‘window.DATA‘))
data_string = data.text.split(‘window.DATA = ‘)[1].rstrip(‘;‘)
Затем мы можем преобразовать его во вложенный словарь Python:
import json
data_json = json.loads(data_string)
Разбор таймсерии
Временной ряд основного объема поиска по нашему ключевому слову находится под data_json[‘timelineData‘]
. Давайте извлечем его:
import pandas as pd
df = pd.DataFrame(data_json[‘timelineData‘])
print(df.head())
При этом печатаются первые несколько строк, содержащие дату, частоту поиска и отформатированную дату.
И вуаля! Теперь у нас есть программный доступ к данным Google Trends для любого ключевого слова без ограничений.
Масштабный анализ тенденций
Ручное извлечение данных по одному ключевому слову полезно, но реальная сила заключается в сборе тысяч терминов.
Чтобы запросить тренды по нескольким ключевым словам, мы просто заключаем наш парсер в цикл:
keywords = [‘python‘, ‘java‘, ‘c++‘]
dataframes = []
for kw in keywords:
url = f‘https://trends.google.com/trends/explore?date=all&q={kw}‘
# Fetch HTML, extract JSON
# ...
df = pd.DataFrame(data_json[‘timelineData‘])
# Append each keyword‘s dataframe
dataframes.append(df)
# Merge all data
trends_data = pd.concat(dataframes, keys=keywords)
Мы также можем добавить задержки между запросами и обработку ошибок, чтобы ответственно относиться к парсингу:
import time
from random import randint
for kw in keywords:
try:
# Scraper code
time.sleep(randint(3,5))
except Exception as e:
print(f‘Error: {e}‘)
# Pause on failure
time.sleep(60)
Это запрашивает Google с разумной скоростью, чтобы избежать перегрузки их серверов. Прокси будут дальше распределять запросы.
Обход капч и блоков
Парсеры, пытающиеся извлечь большие объемы данных, могут столкнуться с мерами по обнаружению капчи и ботов. Вот проверенные методы их обхода:
Жилые прокси
Маршрутизация запросов через жилые IP-адреса делает ваш трафик более человечным, поскольку он исходит из домашних сетей. Лучшие прокси-провайдеры включают в себя:
- БрайтДата – 40 миллионов IP-адресов с аптаймом 97% и автоматическим решением капч. Цены начинаются от 500 долларов в месяц.
- СмартПрокси – 10 миллионов IP-адресов со специальными прокси-серверами для Instagram и кроссовок. Минимум около 700 долларов в месяц.
- Оксилабс – 15 миллионов резидентных IP-адресов. Поддержка высокого параллелизма и объемов. Примерно 500 долларов в месяц.
Настройте ротационные прокси в Python с помощью таких библиотек, как Py.Socks, Запросы и Scrapy.
Браузерная автоматизация
Селен может управлять реальными браузерами Chrome или Firefox для рендеринга JavaScript и обхода защиты при поиске автономных инструментов.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get(url)
html = driver.page_source
driver.quit()
Для большинства средств защиты это выглядит как настоящий сеанс браузера.
Услуги по решению капчи
Такие инструменты, как АнтиКапча и 2Captcha может автоматически решать капчи, перенаправляя их решателям-людям. Цены начинаются от 2 долларов за 1000 капч в зависимости от требований к скорости и точности.
Пример интеграции Python:
import twocaptcha
api_key = ‘YOUR_API_KEY‘
solver = twocaptcha.TwoCaptcha(api_key)
try:
result = solver.recaptcha(sitekey=‘SITE_KEY‘, url=‘URL‘)
except twocaptcha.APIError as e:
print(e)
Использование комбинации прокси, браузеров и средств распознавания капчи поможет избежать практически любой блокировки.
Хранение и анализ данных трендов
Теперь, когда извлечение данных автоматизировано, давайте рассмотрим варианты хранения, анализа и визуализации:
Форматы структурированных данных
Для быстрого анализа в Python я рекомендую преобразовать очищенные данные трендов в Кадр данных Pandas. Это обеспечивает табличную структуру с временными метками, объемами поиска и другими связанными метаданными.
Мы также можем экспортировать фрейм данных в такие форматы, как CSV or JSON для портативности:
trends_df.to_csv(‘trends_data.csv‘, index=False)
Загрузка в базы данных
Для более сложных запросов SQL и объединения с другими источниками данных загрузите очищенные данные в реляционную базу данных, например PostgreSQL or MySQL:
CREATE TABLE trends_data (
date DATE,
keyword VARCHAR(255),
search_volume INT
);
# Insert dataframe rows
trends_df.to_sql(‘trends_data‘, engine, if_exists=‘append‘, index=False)
Базы данных NoSQL, такие как MongoDB также хорошо работает для гибкого хранения JSON.
Инструменты бизнес-аналитики
Чтобы создавать интерактивные информационные панели и визуализации, интегрируйте данные Trends в такие инструменты, как Живая картина, телезритель or Power BI. Они подключаются напрямую к базам данных и форматам электронных таблиц.
Tableau позволяет легко выявлять тенденции и закономерности.
Статистический анализ и моделирование
Загрузив данные Trends в Python и Pandas, мы можем провести анализ временных рядов, используя такие библиотеки, как Статистические модели и Пророк:
from prophet import Prophet
model = Prophet()
model.fit(trends_df)
future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)
Пророк предсказывает будущие тенденции, основываясь на исторических закономерностях.
Мы даже можем создавать модели машинного обучения, такие как АРИМА и LSTM поверх набора данных для получения ценной информации. Возможности безграничны!
Анализ тенденций открывает сверхспособности
В этом руководстве показано, как:
- Настройте парсер Python с помощью Requests, Selenium и Beautiful Soup.
- Извлечение данных временных рядов объема поиска путем анализа JSON
- Соберите тысячи ключевых слов, используя циклы и прокси
- Храните данные трендов в Pandas, CSV, базах данных.
- Анализируйте и визуализируйте данные для получения ценной информации
Парсинг дает вам доступ по требованию к мощному инструменту Google Trends, открывая уникальную конкурентную информацию.
Те же методы можно применить к любому сайту. Благодаря данным Trends в вашем стеке аналитики вы получаете представление о будущих возможностях и рисках, которых нет у ваших конкурентов.
Я всегда рад ответить на любые другие вопросы о расширенном парсинге и прокси. Используйте свои новообретенные сверхспособности парсинга веб-страниц этично и позвольте данным направлять ваш бизнес!