Python: Hati ya Google Autosuggest Dondoo ya Mwelekeo wa Maneno Yako ya Utafutaji wa Niche

Hati ya Python Kukamata Mwelekeo wa Autosuggest

Kila mtu anapenda Mwelekeo wa Google, lakini ni ngumu kidogo linapokuja Maneno muhimu ya Mkia Mrefu. Sisi sote tunampenda afisa huyo huduma ya mwenendo wa google kwa kupata ufahamu juu ya tabia ya utaftaji. Walakini, mambo mawili yanazuia wengi kuitumia kwa kazi ngumu;

  1. Wakati unahitaji kupata maneno mpya ya niche, kuna sio data ya kutosha kwenye Google Trends 
  2. Ukosefu wa API rasmi ya kufanya maombi kwa mwelekeo wa google: Tunapotumia moduli kama pytrends, basi tunapaswa kutumia seva za wakala, au tunazuiliwa. 

Katika nakala hii, nitashiriki Hati ya Python tuliyoandika kusafirisha maneno muhimu kupitia Google Autosuggest.

Leta na Uhifadhi Matokeo ya Autosuggest Kwa Wakati 

Tuseme tuna maneno muhimu ya Mbegu 1,000 ya kutumwa kwa Google Autosuggest. Kwa kurudi, labda tutapata karibu 200,000 mkia mrefu maneno. Halafu, tunahitaji kufanya vivyo hivyo wiki moja baadaye na kulinganisha hifadhidata hizi kujibu maswali mawili:

  • Maswali yapi maneno mapya ikilinganishwa na mara ya mwisho? Hii labda ndio kesi tunayohitaji. Google inafikiria maswali hayo yanakuwa muhimu zaidi - kwa kufanya hivyo, tunaweza kuunda suluhisho letu la Google Autosuggest! 
  • Maswali yapi maneno tena zinazovuma?

Hati ni rahisi sana, na nambari nyingi nilizoshiriki hapa. Nambari iliyosasishwa huokoa data kutoka kwa mbio za zamani na kulinganisha mapendekezo kwa muda. Tuliepuka hifadhidata zenye msingi wa faili kama SQLite kuifanya iwe rahisi - kwa hivyo uhifadhi wote wa data unatumia faili za CSV hapa chini. Hii hukuwezesha kuagiza faili katika Excel na kukagua mwenendo wa neno kuu la niche kwa biashara yako.

Kutumia Hati hii ya Python

  1. Ingiza seti ya neno lako kuu la mbegu ambalo linapaswa kutumwa kwa kukamilisha kiatomati: keywords.csv
  2. Rekebisha mipangilio ya Hati kwa mahitaji yako:
    • LUGHA: chaguomsingi “sw”
    • NCHI: chaguo-msingi “sisi”
  3. Panga hati ya kukimbia mara moja kwa wiki. Unaweza pia kuiendesha kwa mikono kama unavyopenda.
  4. Tumia neno kuu_suggestions.csv kwa uchambuzi zaidi:
    • kwanza_kuonekana: hii ndio tarehe ambayo swala lilionekana kwa mara ya kwanza kwenye autosuggest
    • mara ya mwisho kuonekana: tarehe ambapo swala ilionekana kwa mara ya mwisho
    • ni_ni mpya: ikiwa kwanza_kuonekana == mwisho_kuonekana tumeweka hii kuwa Kweli - Chuja tu juu ya dhamana hii ili upate utaftaji mpya unaotembea kwenye autosuggest ya Google.

Hapa kuna Nambari ya 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

Pakua Hati ya Python

Unafikiri?

Tovuti hii inatumia Akismet kupunguza spam. Jifunze jinsi maoni yako yanasindika.