Marketing alatiSearch Marketing

Python: skripta Google autosuggest ekstrakt trendova za vaše ključne riječi pretraživanja

Svima se sviđa Google Trends, ali pomalo je nezgodno što se tiče ključnih riječi Long Tail. Svi volimo službeno google trendova usluga za dobivanje uvida u ponašanje ponašanja. Međutim, dvije stvari sprečavaju mnoge da ga koriste za solidan rad;

  1. Kada trebate pronaći nove ključne riječi, tamo nema dovoljno podataka na Google trendovima 
  2. Nedostatak službenog API-ja za postavljanje zahtjeva za google trendove: Kada koristimo module poput pytrends, tada moramo koristiti proxy servere ili ćemo biti blokirani. 

U ovom članku podijelit ću Python skriptu koju smo napisali za izvoz trendovskih ključnih riječi putem Google Autosuggest-a.

Dohvatite i pohranite rezultate automatskog predlaženja tijekom vremena 

Pretpostavimo da imamo 1,000 ključnih riječi za sjeme koje treba poslati Google Autosuggestu. Zauzvrat ćemo vjerojatno dobiti oko 200,000 dugačak rep ključne riječi. Zatim, to moramo učiniti tjedan dana kasnije i usporediti ove skupove podataka kako bismo odgovorili na dva pitanja:

  • Koji su upiti nove ključne riječi u odnosu na prošli put? To je vjerovatno slučaj koji nam treba. Google misli da ti upiti postaju značajniji - čineći to, možemo stvoriti vlastito rješenje Google Autosuggest! 
  • Koji su upiti ključne riječi više ne u trendu?

Skripta je prilično jednostavna, a većinu koda sam podijelio OVDJE. Ažurirani kôd sprema podatke iz prošlih pokretanja i uspoređuje prijedloge tijekom vremena. Izbjegavali smo baze podataka zasnovane na datotekama kao što je SQLite da bismo to pojednostavili - tako da sva memorija podataka koristi CSV datoteke u nastavku. To vam omogućava uvoz datoteke u Excel i istraživanje trendova ključnih riječi za vaše poslovanje.

Da biste koristili ovu Python skriptu

  1. Unesite svoj set ključnih riječi koji treba poslati na samodovršavanje: keywords.csv
  2. Prilagodite postavke skripte prema svojim potrebama:
    • JEZIK: zadani “en”
    • ZEMLJA: zadani "mi"
  3. Zakažite da se skripta izvršava jednom sedmično. Možete ga pokrenuti i ručno kako želite.
  4. Koristite keyword_suggestions.csv za dalju analizu:
    • first_seen: ovo je datum kada se upit prvi put pojavio u autosugestiji
    • last_seen: datum kada je upit posljednji put viđen
    • je_novo: ako first_seen == last_seen postavili smo ovo na istinski - Samo filtrirajte ovu vrijednost da biste dobili nove trendovske pretrage u Googleovom autosugestiju.

Evo Python koda

# 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

Preuzmite Python Script

Osman Sirin

Pemavor pruža višestruke alate za digitalni marketing za stručnjake za marketing performansi u sveobuhvatnim paketima za različite zahtjeve. Pomažemo vam u automatizaciji procesa na osnovu podataka u upravljanju kampanjama za oglase, kupovinu, nadmetanje i razne druge marketinške usluge.

Vezani članci

Nazad na vrh dugmeta
blizu

Adblock otkriven

Martech Zone je u mogućnosti da vam pruži ovaj sadržaj bez ikakvih troškova jer mi unovčavamo našu stranicu putem prihoda od oglasa, partnerskih veza i sponzorstava. Bili bismo zahvalni ako biste uklonili svoj blokator oglasa dok gledate našu web stranicu.