Python: skript Google Autosuggest izvleček trendov za vaše ključne besede iskanja v niši

Python Script za zajemanje trendov samodejnega predlaganja

Google Trends je vsem všeč, vendar je pri ključnih besedah ​​z dolgim ​​repom nekoliko zapleteno. Vsi imamo radi uradno storitev Google Trends za vpogled v vedenje iskanja. Vendar dve stvari mnogim preprečujeta, da bi ga uporabili za trdno delo;

  1. Ko morate najti nove nišne ključne besedeobstaja ni dovolj podatkov o storitvi Google Trends 
  2. Pomanjkanje uradnega API-ja za pošiljanje prošenj za Googlove trende: Ko uporabljamo module, kot je pytrends, potem moramo uporabiti proxy strežnike ali pa bomo blokirani. 

V tem članku bom delil skript Python, ki smo ga napisali za izvoz trendnih ključnih besed prek Google Autosuggest.

Pridobi in shrani rezultate samodejnega predlaganja skozi čas 

Recimo, da imamo 1,000 ključnih besed o semenu, ki jih bomo poslali Googlu Autosuggest. V zameno bomo verjetno dobili okoli 200,000 dolgi rep ključne besede. Nato moramo to storiti en teden kasneje in primerjati te nize podatkov, da odgovorimo na dve vprašanji:

  • Katera vprašanja so nove ključne besede v primerjavi s prejšnjim časom? Verjetno je to primer, ki ga potrebujemo. Google meni, da postajajo te poizvedbe pomembnejše - s tem lahko ustvarimo lastno rešitev Google Autosuggest! 
  • Katera vprašanja so ključne besede ne več v trendu?

Skript je precej enostaven in večino kode sem delil tukaj. Posodobljena koda shrani podatke iz preteklih tekov in primerjavo predlogov skozi čas. Da bi to poenostavili, smo se izognili bazam podatkov, ki temeljijo na datotekah, kot je SQLite, zato vse shranjevanje podatkov uporablja spodnje datoteke CSV. To vam omogoča uvoz datoteke v Excelu in raziskovanje nišnih trendov ključnih besed za vaše podjetje.

Uporaba tega skripta Python

  1. Vnesite nabor ključnih besed, ki ga je treba poslati na samodokončanje: keywords.csv
  2. Nastavitve skripta prilagodite svojim potrebam:
    • JEZIK: privzeto “en”
    • DRŽAVA: privzeto »mi«
  3. Načrtujte izvajanje skripta enkrat tedensko. Po želji ga lahko zaženete tudi ročno.
  4. Za nadaljnjo analizo uporabite keyword_suggestions.csv:
    • prvič: to je datum, ko se je poizvedba prvič pojavila v samodejnem predlogu
    • nazadnje viden: datum, ko je bila poizvedba vidna zadnjič
    • je_nov: če first_seen == last_seen smo to nastavili True - Samo filtrirajte to vrednost, da dobite nova priljubljena iskanja v Googlovem samodejnem predlaganju.

Tukaj je koda 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

Prenesite skript Python

Kaj menite?

Ta stran uporablja Akismet za zmanjšanje nezaželene pošte. Preberite, kako se vaš komentar obravnava.