Passer au contenu

Comment débloquer des super pouvoirs en grattant Google Trends

L'outil Trends de Google, disponible gratuitement, fournit une mine d'or de données de recherche qui peuvent donner un avantage à votre entreprise. En récupérant ces données à grande échelle, vous obtenez des informations précieuses pour déjouer la concurrence. Ce guide complet vous apprendra comment exploiter les super pouvoirs du scraping de Google Trends à l'aide de Python.

Google Trends a uniformisé les règles du jeu en démocratisant l'accès aux données agrégées sur le volume de recherche. Les entreprises avisées utilisent de plus en plus les tendances pour obtenir des informations uniques qui éclairent des décisions à fort impact :

  • 89 % des spécialistes du marketing numérique comptez sur Trends pour la recherche de mots clés selon des enquêtes récentes. Les données de volume de recherche aident à optimiser le contenu et la stratégie de référencement.

  • Les tendances ont aidé Spotify identifie des marchés inexploités à étendre à la Roumanie et à la Croatie sur la base de modèles de recherche musicale.

  • Des sociétés financières comme Hedgeye récupérez les données de tendances sur les marques de vente au détail pour prédire les performances économiques en utilisant l'intérêt de recherche comme signal.

  • VC et startups utilisez les tendances pour quantifier la demande du marché pour le pré-lancement de produits et identifier de nouvelles opportunités commerciales.

  • Des tendances même pics de cas de COVID prévus en identifiant un intérêt croissant pour la recherche de symptômes dans des régions spécifiques.

Les applications sont infinies, mais la recherche manuelle des données est lente et limitée. C'est là qu'intervient le web scraping pour automatiser le processus et libérer le véritable pouvoir de Trends.

Configuration d'un grattoir Web Python

Avant de gratter, passons en revue les prérequis et outils clés :

Apprenez Python

La maîtrise de Python est nécessaire pour implémenter un scraper. Je recommande de suivre d'abord des cours en ligne sur les bases de Python et les concepts orientés objet. Voici quelques bonnes ressources de démarrage :

Les bibliothèques étendues de Python et sa syntaxe simple en font un choix parfait pour le web scraping.

Bibliothèques de grattoirs

Ces bibliothèques Python fournissent les capacités de scraping :

  • Demandes – Envoie des requêtes HTTP pour télécharger des pages Web. Plus léger que le sélénium.

  • BeautifulSoup – Analyse les documents HTML et XML pour extraire des données à l'aide de sélecteurs CSS et d'expressions régulières.

  • Sélénium – Lance et contrôle les navigateurs comme Chrome et Firefox pour l’automatisation. Peut contourner les problèmes de rendu JavaScript.

  • Scrapy – Framework complet pour les grands projets de scraping avec des outils tels que les spiders, les pipelines, la mise en cache.

Pour Google Trends, je recommande d'utiliser Requests pour récupérer des pages et BeautifulSoup pour analyser le HTML. Scrapy est excessif pour un grattoir sur un seul site.

Proxies

Pour masquer le trafic scraper, acheminez les requêtes via serveurs proxy résidentiels auprès de fournisseurs comme BrightData, SmartProxy ou Oxylabs. Cela fait que chaque demande apparaît à partir d’une adresse IP résidentielle différente.

Configurer des proxys dans les requêtes à l'aide de bibliothèques Python comme PySocks:

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‘)

Les proxys rotatifs sont essentiels pour un scraping stable et à long terme.

environnements virtuels

Utilisez environnements virtuels pour isoler les dépendances et les paramètres du scraper de votre installation Python principale. Les choix courants sont virtualenv, pipenv et Anaconda.

Par exemple :

pip install virtualenv
virtualenv myscraperenv
source myscraperenv/bin/activate

Voyons maintenant comment construire le grattoir !

L'application Web Trends envoie des requêtes aux API internes pour récupérer les données de recherche. Nous devons procéder à une ingénierie inverse de l'endroit où se trouvent ces données dans le code HTML et les extraire.

Passons en revue étape par étape :

Récupération de la page HTML

Nous allons d'abord utiliser les requêtes pour télécharger la page HTML :

import requests

url = ‘https://trends.google.com/trends/explore?date=all&q=python‘ 

response = requests.get(url)
html = response.text

Nous pourrions également intégrer ici l'automatisation du navigateur Selenium pour rendre JavaScript.

Analyse avec BeautifulSoup

Ensuite, nous analyserons le code HTML et naviguerons dans l'arborescence DOM à l'aide de BeautifulSoup :

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, ‘html.parser‘)

soup contient désormais le document structuré.

Extraction de données JSON

Les données du graphique de tendances se trouvent dans une variable JavaScript appelée window.DATA. Nous devons extraire la chaîne JSON brute :

data = soup.find(‘script‘, text=lambda t: t.startswith(‘window.DATA‘))
data_string = data.text.split(‘window.DATA = ‘)[1].rstrip(‘;‘) 

Ensuite, nous pouvons le convertir en un dictionnaire Python imbriqué :

import json

data_json = json.loads(data_string)

Analyser la série temporelle

La série chronologique principale du volume de recherche pour notre mot-clé se trouve sous data_json[‘timelineData‘]. Extrayons-le :

import pandas as pd 

df = pd.DataFrame(data_json[‘timelineData‘])
print(df.head())

Ceci imprime les premières lignes contenant la date, la fréquence de recherche et la date formatée.

Et voilà ! Nous avons désormais un accès programmatique aux données Google Trends pour n'importe quel mot-clé sans limites.

L'extraction manuelle des données pour un mot-clé est utile, mais le véritable pouvoir vient de la suppression de milliers de termes.

Pour interroger Trends sur plusieurs mots-clés, nous enveloppons simplement notre scraper dans une boucle :

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)

Nous pouvons également ajouter des délais entre les requêtes et la gestion des erreurs pour effectuer un scraping responsable :

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) 

Celui-ci interroge Google à un rythme raisonnable pour éviter de surcharger ses serveurs. Les proxys distribueront davantage les demandes.

Contourner les captchas et les blocages

Les scrapers qui tentent d’extraire de grandes quantités de données peuvent être confrontés à des mesures de détection de captcha et de robots. Voici des techniques éprouvées pour les contourner :

Proxys résidentiels

Acheminer les requêtes via IP résidentielles rend votre trafic plus humain puisqu’il provient des réseaux domestiques. Les principaux fournisseurs de proxy incluent :

  • Données lumineuses – 40 millions d’IP avec une disponibilité de 97 % et des captchas à résolution automatique. Les prix commencent autour de 500 $/mois.
  • Proxy intelligent – 10 millions d’adresses IP avec des proxys spéciaux pour Instagram et les baskets. Environ 700$/mois minimum.
  • oxylabs – 15 millions d’IP résidentielles. Prend en charge une concurrence et des volumes élevés. Environ 500$/mois.

Configurez des proxys rotatifs en Python avec des bibliothèques comme PySocks, Requêtes et Scrapy.

Automatisation du navigateur

Sélénium peut piloter de vrais navigateurs Chrome ou Firefox pour afficher JavaScript et contourner les protections à la recherche d'outils sans tête.

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() 

Cela ressemble à une véritable session de navigateur pour la plupart des défenses.

Services de résolution de captcha

Des outils comme AntiCaptcha ainsi que 2Captcha peut résoudre automatiquement les captchas en les acheminant vers des solveurs humains. Les prix commencent autour de 2 $ pour 1000 XNUMX captchas en fonction des besoins de vitesse et de précision.

Exemple d'intégration 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)

L’utilisation d’une combinaison de proxys, de navigateurs et de solveurs de captcha permettra d’éviter presque tous les blocages.

Avec l'extraction de données automatisée, examinons les options de stockage, d'analyse et de visualisation :

Formats de données structurés

Pour une analyse rapide en Python, je recommande de convertir les données Trends récupérées en un Cadre de données Pandas. Cela fournit une structure tabulaire avec des horodatages, des volumes de recherche et d'autres métadonnées associées.

Nous pouvons également exporter le dataframe vers des formats tels que CSV or JSON pour la portabilité :

trends_df.to_csv(‘trends_data.csv‘, index=False)

Chargement dans des bases de données

Pour des requêtes SQL plus avancées et une jonction avec d'autres sources de données, chargez les données récupérées dans une base de données relationnelle telle que 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)

Bases de données NoSQL comme MongoDB fonctionne également bien pour le stockage JSON flexible.

Outils de Business Intelligence

Pour créer des tableaux de bord et des visualisations interactifs, intégrez les données Trends dans des outils tels que Tableau, Looker or Power BI. Ceux-ci se connectent directement aux bases de données et aux formats de feuilles de calcul.

Exemple de tableau de bord Tableau avec graphiques

Tableau facilite l'identification des tendances et des modèles.

Analyse statistique et modélisation

Avec les données Trends chargées dans Python et Pandas, nous pouvons effectuer une analyse de séries chronologiques à l'aide de bibliothèques telles que StatsModèles ainsi que Prophète:

from prophet import Prophet

model = Prophet()
model.fit(trends_df)

future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)

Prophet prévoit les tendances futures sur la base de modèles historiques.

Nous pouvons même créer des modèles ML comme ARIMA ainsi que LSTM au-dessus de l'ensemble de données pour générer des informations. Les possibilités sont infinies!

Ce guide vous a montré comment :

  • Configurer un grattoir Python avec Requests, Selenium, Beautiful Soup
  • Extraire les données de séries chronologiques du volume de recherche en analysant JSON
  • Grattez des milliers de mots-clés à l'aide de boucles et de proxys
  • Stocker les données Trends dans Pandas, CSV, bases de données
  • Analyser et visualiser les données pour obtenir des informations

Scraping vous donne un accès à la demande au puissant outil Trends de Google, qui vous permet de bénéficier d'une veille concurrentielle unique.

Les mêmes techniques peuvent être appliquées à n’importe quel site. Avec les données Trends dans votre pile d'analyse, vous obtenez une vision des opportunités et des risques futurs qui manquent à vos concurrents.fetcherviewergefessdger ilnkd tffavfwa

Je serai toujours heureux de répondre à toute autre question sur le scraping avancé et les proxys. Utilisez vos nouveaux super pouvoirs de web scraping de manière éthique et laissez les données guider votre entreprise !

Prendre part à la conversation

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *