Comment récupérer les données de Google Trends en utilisant Python

Commentaires: 0

L'utilisation de Python et de Playwright pour extraire des données de Google Trends permet un examen détaillé de la popularité des mots clés et le suivi des changements de tendance au fil du temps. Cette approche fournit des informations cruciales pour l'analyse marketing.

Prérequis

Avant de plonger dans le code, assurez-vous que les outils suivants sont installés :

  • Python 3.7+ ;
  • Bibliothèque Playwright.

Vous pouvez installer Playwright à l'aide de pip :

pip install playwright

Pour utiliser Playwright avec du code asynchrone, vous aurez également besoin de la bibliothèque asyncio, qui est incluse par défaut dans Python 3.7+.

Configurer Playwright pour travailler avec Google Trends

Nous allons utiliser Playwright, un puissant outil d'automatisation du navigateur, pour naviguer sur le site Web de Google Trends et télécharger des fichiers CSV contenant des données sur les tendances. Ce didacticiel vous guidera tout au long du processus.

Installation du dramaturge

Tout d'abord, assurez-vous que Playwright est installé :

playwright install

Si vous ne souhaitez pas installer tous les navigateurs, il vous suffit d'utiliser cette commande pour installer uniquement le navigateur Chrome.

playwright install chromium

Configuration du serveur mandataire

L'utilisation de proxys est essentielle pour le scraping de plateformes telles que Google, qui luttent activement contre l'activité des robots. Les proxys permettent la rotation des adresses IP, ce qui contribue à réduire le risque d'être bloqué. Dans notre script, nous utilisons des proxys privés pour acheminer nos demandes.

proxy = {
    "server": "IP:PORT",
    "username": "your_username",
    "password": "your_password"
}

Remplacez les variables IP, PORT, nom d'utilisateur et mot de passe par les données réelles de votre serveur proxy.

Processus de travail avec le dramaturge, étape par étape

Dans cet exemple, nous naviguons d'abord sur google.com pour contourner tout blocage potentiel avant de nous rendre sur la page Google Trends. Cela permet d'imiter le comportement normal d'un utilisateur et d'éviter la détection.

Étape 1 : Se préparer à travailler avec Google Trends

Cette étape consiste à prendre des mesures préliminaires pour éviter d'être signalé et bloqué par Google :

  • Lancement du navigateur : il s'agit de lancer une instance du navigateur Chromium configurée avec des paramètres de proxy. L'utilisation de proxys permet de réduire les risques de détection en déguisant l'activité de scraping en une utilisation normale du navigateur ;
  • Naviguer vers Google : en accédant d'abord à google.com, les systèmes de suivi de Google s'habituent à la présence de ce qu'ils perçoivent comme un nouvel utilisateur. Cette simple étape de navigation réduit la probabilité que les activités ultérieures soient classées comme des activités de robots, ce qui permet d'éviter un blocage immédiat.
import asyncio
from playwright.async_api import Playwright, async_playwright

async def run(playwright: Playwright) -> None:
    # Lancement du navigateur avec les paramètres du proxy
    browser = await playwright.chromium.launch(headless=False, proxy={
        "server": "IP:PORT",
        "username": "your_username",
        "password": "your_password"
    })
    
    # Création d'un nouveau contexte de navigation
    context = await browser.new_context()
    
    # Ouverture d'une nouvelle page
    page = await context.new_page()
    
    # Visiter Google pour imiter la navigation normale
    await page.goto("https://google.com")

Étape 2 : Navigation et téléchargement des données de Google Trends

Ensuite, accédez directement à la page de Google Trends où se trouvent les données requises. Google Trends propose des options pour télécharger les données directement au format CSV, ce qui facilite le processus d'extraction. Automatisez l'action consistant à cliquer sur le bouton "Télécharger" pour lancer le téléchargement des données. Cela permet d'extraire les données de tendances sans intervention manuelle. Une fois que le bouton "Télécharger" est visible, l'automate doit cliquer dessus pour lancer le téléchargement du fichier CSV qui contient les données de tendance nécessaires.

 # Naviguer vers Google Trends
    await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")
    
    # Attendre le bouton de téléchargement et cliquer dessus
    async with page.expect_download() as download_info:
        await page.get_by_role("button", name="file_download").first.click()
    
    # Gestion du téléchargement
    download = await download_info.value
    print(download.suggested_filename)

Etape 3 : sauvegarde des données et fin de la session

Le fichier CSV téléchargé est automatiquement enregistré dans un répertoire spécifié sur votre appareil local.

 # Enregistrement du fichier téléchargé
    await download.save_as("/path/to/save/" + download.suggested_filename)

Exemple de code complet

Voici le code complet pour télécharger les données Google Trends sous forme de fichier CSV à l'aide de Playwright :

import asyncio
import os
import re
from playwright.async_api import Playwright, async_playwright


async def run(playwright: Playwright) -> None:
   # Lancer le navigateur avec les paramètres du proxy
   browser = await playwright.chromium.launch(headless=False, proxy={
       "server": "IP:PORT",
       "username": "your_username",
       "password": "your_password"
   })

   # Créer un nouveau contexte de navigation
   context = await browser.new_context()

   # Ouvrir une nouvelle page
   page = await context.new_page()

   # Visitez Google pour éviter la détection
   await page.goto("https://google.com")

   # Naviguer vers Google Trends
   await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")

   # Cliquez sur le bouton de téléchargement
   async with page.expect_download() as download_info:
       await page.get_by_role("button", name=re.compile(r"file_download")).first.click()

   # Enregistrer le fichier téléchargé
   download = await download_info.value
   destination_path = os.path.join("path/to/save", download.suggested_filename)
   await download.save_as(destination_path)

   # Fermer le contexte et le navigateur
   await context.close()
   await browser.close()


async def main() -> None:
   async with async_playwright() as playwright:
       await run(playwright)


asyncio.run(main())

En suivant ce guide, vous pourrez télécharger efficacement des données sur les tendances, gérer la rotation des serveurs mandataires et contourner les mécanismes de protection contre les robots. Pour éviter efficacement le blocage, il est essentiel d'utiliser des serveurs proxy fiables. Les proxys résidentiels, qui offrent des adresses IP dynamiques et ne nécessitent pas de configuration de rotation, sont fortement recommandés. Les serveurs mandataires statiques des FAI sont également efficaces ; achetez le nombre d'adresses IP requis et mettez en place une rotation régulière des adresses IP dans votre script. L'un ou l'autre choix garantit un risque minimal de blocage et de captcha, facilitant ainsi un scraping de données plus rapide et plus fluide.

Commentaires:

0 Commentaires