Python: Script Un extrait de Google Autosuggest de tendances pour vos mots-clés de recherche de niche

Script Python pour capturer les tendances de suggestion automatique

Tout le monde aime Google Trends, mais c'est un peu délicat en ce qui concerne les mots-clés à longue traîne. Nous aimons tous le fonctionnaire service google trends pour obtenir des informations sur le comportement de recherche. Cependant, deux choses empêchent beaucoup de l'utiliser pour un travail solide;

  1. Lorsque vous avez besoin de trouver nouveaux mots-clés de niche, Là il n'y a pas assez de données sur Google Trends 
  2. Absence d'API officielle pour faire des demandes à google trends: lorsque nous utilisons des modules comme pytrends, alors nous devons utiliser des serveurs proxy, sinon nous sommes bloqués. 

Dans cet article, je vais partager un script Python que nous avons écrit pour exporter des mots-clés tendance via Google Autosuggest.

Récupérer et stocker les résultats des suggestions automatiques au fil du temps 

Supposons que nous ayons 1,000 200,000 mots clés de base à envoyer à Google Autosuggest. En retour, nous aurons probablement environ XNUMX longue queue mots clés. Ensuite, nous devons faire de même une semaine plus tard et comparer ces ensembles de données pour répondre à deux questions:

  • Quelles requêtes sont nouveaux mots clés par rapport à la dernière fois? C'est probablement le cas dont nous avons besoin. Google pense que ces requêtes deviennent de plus en plus importantes - ce faisant, nous pouvons créer notre propre solution Google Autosuggest! 
  • Quelles requêtes sont les mots clés ne sont plus tendance?

Le script est assez simple et la plupart du code que j'ai partagé ici. Le code mis à jour enregistre les données des exécutions précédentes et compare les suggestions au fil du temps. Nous avons évité les bases de données basées sur des fichiers comme SQLite pour simplifier les choses - donc tout le stockage de données utilise les fichiers CSV ci-dessous. Cela vous permet d'importer le fichier dans Excel et d'explorer les tendances des mots clés de niche pour votre entreprise.

Pour utiliser ce script Python

  1. Entrez votre ensemble de mots-clés de départ à envoyer à la saisie semi-automatique: keywords.csv
  2. Ajustez les paramètres de script selon vos besoins:
    • LANGUE: "en" par défaut
    • PAYS: "nous" par défaut
  3. Planifiez l'exécution du script une fois par semaine. Vous pouvez également l'exécuter manuellement comme vous le souhaitez.
  4. Utilisez keyword_suggestions.csv pour une analyse plus approfondie:
    • vu la première fois: il s'agit de la date à laquelle la requête est apparue pour la première fois dans l'autosuggest
    • dernière_vue: la date à laquelle la requête a été vue pour la dernière fois
    • est nouveau: if first_seen == last_seen nous définissons ceci sur Vrai - Filtrez simplement sur cette valeur pour obtenir les nouvelles recherches de tendances dans l'autosuggest Google.

Voici le code Python

# Pemavor.com Autocomplete Trends
# Author: Stefan Neefischer (stefan.neefischer@gmail.com)
import concurrent.futures
from datetime import date
from datetime import datetime
import pandas as pd
import itertools
import requests
import string
import json
import time

charList = " " + string.ascii_lowercase + string.digits

def makeGoogleRequest(query):
    # If you make requests too quickly, you may be blocked by google 
    time.sleep(WAIT_TIME)
    URL="http://suggestqueries.google.com/complete/search"
    PARAMS = {"client":"opera",
            "hl":LANGUAGE,
            "q":query,
            "gl":COUNTRY}
    response = requests.get(URL, params=PARAMS)
    if response.status_code == 200:
        try:
            suggestedSearches = json.loads(response.content.decode('utf-8'))[1]
        except:
            suggestedSearches = json.loads(response.content.decode('latin-1'))[1]
        return suggestedSearches
    else:
        return "ERR"

def getGoogleSuggests(keyword):
    # err_count1 = 0
    queryList = [keyword + " " + char for char in charList]
    suggestions = []
    for query in queryList:
        suggestion = makeGoogleRequest(query)
        if suggestion != 'ERR':
            suggestions.append(suggestion)

    # Remove empty suggestions
    suggestions = set(itertools.chain(*suggestions))
    if "" in suggestions:
        suggestions.remove("")
    return suggestions

def autocomplete(csv_fileName):
    dateTimeObj = datetime.now().date()
    #read your csv file that contain keywords that you want to send to google autocomplete
    df = pd.read_csv(csv_fileName)
    keywords = df.iloc[:,0].tolist()
    resultList = []

    with concurrent.futures.ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
        futuresGoogle = {executor.submit(getGoogleSuggests, keyword): keyword for keyword in keywords}

        for future in concurrent.futures.as_completed(futuresGoogle):
            key = futuresGoogle[future]
            for suggestion in future.result():
                resultList.append([key, suggestion])

    # Convert the results to a dataframe
    suggestion_new = pd.DataFrame(resultList, columns=['Keyword','Suggestion'])
    del resultList

    #if we have old results read them
    try:
        suggestion_df=pd.read_csv("keyword_suggestions.csv")
        
    except:
        suggestion_df=pd.DataFrame(columns=['first_seen','last_seen','Keyword','Suggestion'])
    
    suggestionCommon_list=[]
    suggestionNew_list=[]
    for keyword in suggestion_new["Keyword"].unique():
        new_df=suggestion_new[suggestion_new["Keyword"]==keyword]
        old_df=suggestion_df[suggestion_df["Keyword"]==keyword]
        newSuggestion=set(new_df["Suggestion"].to_list())
        oldSuggestion=set(old_df["Suggestion"].to_list())
        commonSuggestion=list(newSuggestion & oldSuggestion)
        new_Suggestion=list(newSuggestion - oldSuggestion)
         
        for suggest in commonSuggestion:
            suggestionCommon_list.append([dateTimeObj,keyword,suggest])
        for suggest in new_Suggestion:
            suggestionNew_list.append([dateTimeObj,dateTimeObj,keyword,suggest])
    
    #new keywords
    newSuggestion_df = pd.DataFrame(suggestionNew_list, columns=['first_seen','last_seen','Keyword','Suggestion'])
    #shared keywords with date update
    commonSuggestion_df = pd.DataFrame(suggestionCommon_list, columns=['last_seen','Keyword','Suggestion'])
    merge=pd.merge(suggestion_df, commonSuggestion_df, left_on=["Suggestion"], right_on=["Suggestion"], how='left')
    merge = merge.rename(columns={'last_seen_y': 'last_seen',"Keyword_x":"Keyword"})
    merge["last_seen"].fillna(merge["last_seen_x"], inplace=True)
    del merge["last_seen_x"]
    del merge["Keyword_y"]
    
    #merge old results with new results
    frames = [merge, newSuggestion_df]
    keywords_df =  pd.concat(frames, ignore_index=True, sort=False)
    # Save dataframe as a CSV file
    keywords_df['first_seen'] = pd.to_datetime(keywords_df['first_seen'])
    keywords_df = keywords_df.sort_values(by=['first_seen','Keyword'], ascending=[False,False])   
    keywords_df['first_seen']= pd.to_datetime(keywords_df['first_seen'])
    keywords_df['last_seen']= pd.to_datetime(keywords_df['last_seen'])
    keywords_df['is_new'] = (keywords_df['first_seen']== keywords_df['last_seen'])
    keywords_df=keywords_df[['first_seen','last_seen','Keyword','Suggestion','is_new']]
    keywords_df.to_csv('keyword_suggestions.csv', index=False)

# If you use more than 50 seed keywords you should slow down your requests - otherwise google is blocking the script
# If you have thousands of seed keywords use e.g. WAIT_TIME = 1 and MAX_WORKERS = 5
WAIT_TIME = 0.2
MAX_WORKERS = 20
# set the autocomplete language
LANGUAGE = "en"
# set the autocomplete country code - DE, US, TR, GR, etc..
COUNTRY="US"
# Keyword_seed csv file name. One column csv file.
#csv_fileName="keyword_seeds.csv"
CSV_FILE_NAME="keywords.csv"
autocomplete(CSV_FILE_NAME)
#The result will save in keyword_suggestions.csv csv file

Téléchargez le script Python

Que pensez-vous?

Ce site utilise Akismet pour réduire les spams. Découvrez comment sont traitées les données de vos commentaires..