Python: Script Google autosuggest Extract of Trends for Your Niche Search Keywords

Python skripts, lai uztvertu automātiskās ieteikšanas tendences

Visiem patīk Google tendences, taču tas ir mazliet grūts, runājot par Long Tail Keywords. Mums visiem patīk ierēdnis google tendenču serviss lai iegūtu ieskatu meklēšanas uzvedībā. Tomēr divas lietas daudziem traucē to izmantot nopietnam darbam;

  1. Kad jums jāatrod jauni nišas atslēgvārdi, tur nav pietiekami daudz datu pakalpojumā Google tendences 
  2. Oficiāla API trūkums pieprasījumu iesniegšanai google tendencēm: kad mēs izmantojam tādus moduļus kā pytrends, tad mums jāizmanto starpniekserveri, vai arī mēs tiekam bloķēti. 

Šajā rakstā es dalīšos ar mūsu izveidotu Python skriptu, lai eksportētu populārus atslēgvārdus, izmantojot Google Autosuggest.

Paņemt un saglabāt laika gaitā automātiskos ieteikumus 

Pieņemsim, ka mums ir 1,000 Seed atslēgvārdu, kas jānosūta uz Google Autosuggest. Pretī mēs, iespējams, iegūsim apmēram 200,000 XNUMX garā astīte atslēgvārdi. Pēc tam mums tas pats jādara vienu nedēļu vēlāk un jāsalīdzina šīs datu kopas, lai atbildētu uz diviem jautājumiem:

  • Kuri ir vaicājumi jauni atslēgvārdi salīdzinot ar iepriekšējo reizi? Tas, iespējams, ir mums nepieciešamais gadījums. Google domā, ka šie vaicājumi kļūst arvien nozīmīgāki - šādi rīkojoties, mēs varam izveidot savu Google Autosuggest risinājumu! 
  • Kuri ir vaicājumi atslēgvārdi vairs nav tendence?

Skripts ir diezgan vienkāršs, un lielāko daļu koda es kopīgoju šeit. Atjauninātais kods saglabā datus no iepriekšējām darbībām un laika gaitā salīdzina ieteikumus. Mēs to izvairījāmies no datubāzēm, piemēram, SQLite, lai padarītu to vienkāršu - tāpēc visu datu krātuvē tiek izmantoti CSV faili. Tas ļauj importēt failu programmā Excel un izpētīt niša atslēgvārdu tendences savam biznesam.

Lai izmantotu šo Python skriptu

  1. Ievadiet sākotnējo atslēgvārdu kopu, kas jānosūta automātiskajai aizpildīšanai: keywords.csv
  2. Pielāgojiet skripta iestatījumus atbilstoši savām vajadzībām:
    • VALODA: noklusējuma “en”
    • VALSTS: noklusējums “mēs”
  3. Ieplānojiet skripta palaišanu reizi nedēļā. Varat arī palaist to manuāli, kā vēlaties.
  4. Izmantojiet keyword_suggestions.csv tālākai analīzei:
    • pirmais_redzēts: šis ir datums, kad vaicājums pirmo reizi parādījās automātiskajā ieteikumā
    • pēdējo reizi redzēts: datums, kurā vaicājums tika redzēts pēdējo reizi
    • is_new: ja first_seen == last_seen mēs to iestatījām uz Patiess - Vienkārši filtrējiet šo vērtību, lai Google automātiskajā ieteikumā iegūtu jaunus populāros meklēšanas vaicājumus.

Šeit ir Python kods

# 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

Lejupielādējiet Python skriptu

Ko jūs domājat?

Šī vietne izmanto Akismet, lai samazinātu surogātpastu. Uzziniet, kā tiek apstrādāts jūsu komentārs.