Python: Script Usa ka Google Autosuggest Kinuha nga Uso alang sa Imong mga Keyword sa Pagpangita sa Niche

Python Script Aron Makuha ang Mga Tren sa Autosuggest

Ang tanan ganahan sa Google Trends, apan medyo lisud kini bahin sa Long Tail Keywords. Gusto namon tanan ang opisyal serbisyo sa uso sa google alang sa pagkuha mga panan-aw sa pamatasan sa pagpangita. Bisan pa, duha nga mga butang ang nagpugong sa kadaghanan nga gamiton kini alang sa solidong trabaho;

  1. Kung kinahanglan nimo pangitaon bag-ong mga keyword sa lihok, didto dili igo nga datos sa Google Trends 
  2. Kakulang sa opisyal nga API alang sa paghimo og mga hangyo sa mga uso sa google: Kung gigamit namon ang mga module nga gusto pytrends, pagkahuman kinahanglan namon nga gamiton ang mga proxy server, o babagan kami. 

Niini nga artikulo, ipaambit nako ang usa ka Python Script nga gisulat namon aron ma-export ang mga nauso nga keyword pinaagi sa Google Autosuggest.

Pagkuha ug Pagtipig Mga Resulta nga Autosuggest Sa Paglabay sa Oras 

Pananglit adunay kami 1,000 nga binhi nga mga keyword nga ipadala sa Google Autosuggest. Sa baylo, tingali makakuha kita mga 200,000 longtail mga keyword. Pagkahuman, kinahanglan naton nga buhaton ang parehas usa ka semana ang ulahi ug itandi kini nga mga dataset aron matubag ang duha nga mga pangutana:

  • Kinsa sa mga pangutana bag-ong mga keyword itandi sa katapusang oras? Kini tingali ang kinahanglan nga kaso. Gihunahuna sa Google nga ang mga pangutana nahimong labi ka hinungdanon - sa paghimo niini, makahimo kami kaugalingon nga solusyon sa Google Autosuggest! 
  • Kinsa sa mga pangutana Wala na ang mga keyword uso?

Ang script dali ra, ug ang kadaghanan sa code nga akong gipaambit dinhi. Ang gi-update nga code nagtipig sa datos gikan sa nangaging mga pagdagan ug pagtandi sa mga sugyot sa paglabay sa panahon. Gilikayan namon ang mga database nga nakabase sa file sama sa SQLite aron mahimo kini yano - busa ang tanan nga pagtipig sa datos naggamit mga CSV file sa ubus. Nahatagan ka niini hinungdan nga ma-import ang file sa Excel ug susihon ang mga uso sa keyword alang sa imong negosyo.

Aron magamit Kini nga Python Script

  1. Pagsulud sa imong set sa keyword nga binhi nga kinahanglan ipadala sa autocomplete: keywords.csv
  2. Ayuhon ang mga setting sa Script alang sa imong kinahanglan:
    • LANGUAGE: default “en”
    • NASOD: default “us”
  3. Iiskedyul ang iskrip aron modagan kausa sa usa ka semana. Mahimo mo usab kini nga padaganon sa kamut ingon sa gusto nimo.
  4. Paggamit keyword_suggestions.csv alang sa dugang nga pagtuki:
    • una_kita: kini ang petsa diin nagpakita ang pangutana sa unang higayon sa autosuggest
    • katapusan_kita: ang petsa diin nakita ang pangutana sa katapusang oras
    • mao_ng bag-o: kung first_seen == last_seen gibutang namon kini sa Tinuod nga - Pag-filter ra sa kini nga kantidad aron makuha ang bag-ong mga uso sa pagpangita sa Google autosuggest.

Ania ang Python Code

# 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

Pag-download sa Python Script

Unsay imong hunahuna?

Kini nga site naggamit sa Akismet sa pagpakunhod sa spam. Hibal-i kon giunsa ang pagproseso sa datos sa imong komento.