перейти к содержанию

Как разблокировать сверхспособности, очистив Google Trends

Бесплатно доступный инструмент 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

Теперь давайте посмотрим на создание скребка!

Веб-приложение 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 с графиками

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 в вашем стеке аналитики вы получаете представление о будущих возможностях и рисках, которых нет у ваших конкурентов.

Я всегда рад ответить на любые другие вопросы о расширенном парсинге и прокси. Используйте свои новообретенные сверхспособности парсинга веб-страниц этично и позвольте данным направлять ваш бизнес!

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *