Python: Script A Google Autosuggest Extract of Trends for your Niche Keywords Keywords: Isweydaarsiga 'Google Autosuggest Extract of Trends for your Miski Search Keywords'

Qoraalka Python Si Loogu Qabto Isbeddellada Autosuggest

Qof kastaa wuu jecel yahay Google Trends, laakiin waa waxoogaa khiyaano leh marka laga hadlayo Keywords Tail Long. Dhamaanteen waan jecelnahay sarkaalka adeegga isbeddellada google si loo helo aragti ku saabsan dhaqanka raadinta. Si kastaba ha noqotee, laba shay ayaa ka hortagaya in badan oo ka mid ah ay u adeegsadaan shaqo adag;

  1. Markaad u baahato inaad hesho keywords cusub niche, waxaa maahan xog ku filan Google Trends 
  2. La'aanta rasmiga rasmiga ah ee API ee sameynta codsiyada ku saabsan isbeddellada google: Marka aan ka faa'iideysanno qaybaha sida pytrends, markaa waa inaan isticmaalnaa adeegeyaal wakiil, ama waan xannibannahay. 

Maqaalkan, waxaan la wadaagi doonaa Qoraal Python ah oo aan qornay si aan ugu dhoofinno ereyada muhiimka ah ee loo maro Google Autosuggest.

Keen oo Kaydso Natiijooyinka Autosuggest Waqti Dheer 

Ka soo qaad in aan hayno 1,000 keywords keywords oo loo diro Google Autosuggest. Beddelkeeda, waxaynu u badannahay inaynu helayno ilaa 200,000 dheer ereyada muhiimka ah. Ka dib, waxaan u baahanahay inaan isla sidaas sameyno hal usbuuc ka dib oo aan isbarbar dhigno xog uruurintan si aan uga jawaabno laba su'aalood:

  • Weydiimahee ayaa ah keywords cusub marka la barbardhigo waqtiga ugu dambeeya? Tani waxay u badan tahay kiiska aan u baahanahay. Google waxay u maleyneysaa in weydiimahan ay noqonayaan kuwo muhiim ah - markaan sidaas sameyno, waxaan abuuri karnaa xalkayaga Google Autosuggest! 
  • Weydiimahee ayaa ah ereyada muhiimka ah mar dambe Daalacanaya?

Qoraalku waa sahlan yahay, badanaana koodhkii aan wadaagay halkan. Koodhka la cusbooneysiiyay wuxuu kaydiyaa xogta wixii hore u socday oo isbarbardhigaya soo jeedinta waqtiga. Waxaan ka fogaanay xog-ururin ku saleysan feyl sida SQLite si aan uga dhigno mid fudud - marka dhammaan keydinta xogta waxay isticmaaleysaa faylasha CSV ee hoose. Tani waxay awood kuu siineysaa inaad soo dhoofsato feylka 'Excel' isla markaana aad u sahamiso isbeddellada ereyada muhiimka u ah ganacsigaaga.

Ka Faa'ideysiga Qoraalkan Python-ka ah

  1. Gali keyword keyword-kaaga oo ah in loo diro autocomplete-ka: keywords.csv
  2. Ku hagaaji dejinta qoraalka baahidaada:
    • LUQAD: asalka "en"
    • DALKA: asalka "anaga"
  3. Jadwal u samee qoraalka si aad u socodsiiso toddobaadkiiba mar. Waxaad sidoo kale ku maamuli kartaa gacanta sida aad rabto.
  4. U isticmaal keyword_suggestions.csv falanqeyn dheeri ah:
    • marka hore: kani waa taariikhda ay weydiintu ka muuqatay markii ugu horreysay ee autosuggest-ka
    • ugu dambeeyay: taariikhda meesha weydiinta lagu arkay markii ugu dambeysay
    • cusub: haddii first_seen == last_seen waxaan u dejinay tan True - Kaliya ku shaandhee qiimahaas si aad u hesho raadinta cusub ee isbeddelka ee ku jirta Google autosuggest.

Waa tan Xeerka 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

Soodejiso Qoraalka Python

Maxay idinla tahay?

Boggani wuxuu isticmaalaa Akismet si loo yareeyo spam. Baro sida xogtaada faallooyinkaaga looga shaqeeyo.