Python: Script A Google Autosuggest Trends of Trends for Your Niche Search Wordwords

Скрипти Python барои дастгир кардани тамоюлҳои худкор

Google Trends ба ҳама маъқул аст, аммо вақте ки сухан дар бораи калимаҳои калидии дарозмӯҳлат меравад, ин як андоза душвор аст. Мо ҳама мансабдорро дӯст медорем хидмати тамоюлҳои гугл барои гирифтани фаҳмиш дар бораи рафтори ҷустуҷӯ. Аммо, ду чиз ба бисёриҳо монеъ мешавад, ки онро барои кори устувор истифода баранд;

  1. Вақте ки ба шумо лозим аст, ки пайдо кунед калимаҳои калидии нав, Он ҷо маълумот дар бораи Google Trends кофӣ нест 
  2. Набудани API расмӣ барои қабули дархостҳо ба тамоюлҳои гугл: Вақте ки мо модулҳоро ба монанди истифода мебарем питрендҳо, пас мо бояд серверҳои прокси-ро истифода барем, ё мо баста мешавем. 

Дар ин мақола, ман як скрипти Python -ро, ки барои навиштани калимаҳои калидӣ тавассути Google Autosuggest навиштаем, мубодила хоҳам кард.

Натиҷаҳоро бо мурури замон кашед ва нигоҳ доред 

Фарз мекунем, ки мо 1,000 калимаи калидии Seed дорем, ки ба Google Autosuggest фиристода шаванд. Дар навбати худ, мо эҳтимолан тақрибан 200,000 мегирем дарозмуддат калимаҳои калидӣ. Сипас, ба мо лозим меояд, ки ҳамин корро як ҳафта пас анҷом диҳем ва ин маҷмӯаҳоро барои муқоисаи ду савол муқоиса намоем:

  • Кадом саволҳо калимаҳои нав нисбат ба замони охир? Шояд ин ҳолат ба мо лозим бошад. Google фикр мекунад, ки ин дархостҳо аҳамияти бештар пайдо мекунанд - бо ин кор, мо метавонем ҳалли Google Autosuggest-и худро созем! 
  • Кадом саволҳо Калимаҳои калидӣ дигар нестанд тамоюли?

Скрипт хеле осон аст ва қисми зиёди рамзро ман мубодила кардам Ин ҷо. Рамзи навшуда маълумотро аз давраҳои гузашта ва муқоисаи пешниҳодҳоро бо мурури замон сарфа мекунад. Мо аз пойгоҳи додаҳои ба файлҳо асосёфта ба монанди SQLite канорагирӣ кардем, то онро содда кунад - аз ин рӯ ҳамаи нигаҳдории додаҳо файлҳои CSV-и дар поёнбударо истифода мебаранд. Ин ба шумо имкон медиҳад, ки файлро дар Excel ворид кунед ва тамоюлҳои калимаи калидии тиҷорати худро омӯзед.

Барои истифодаи ин скрипти Python

  1. Маҷмӯи калимаҳои насли худро ворид кунед, ки бояд ба таври автоматикӣ фиристода шавад: keywords.csv
  2. Танзимоти скриптро барои эҳтиёҷоти худ танзим кунед:
    • ЗАБОН: пешфарз “en”
    • КИШВАР: "мо" -и пешфарз
  3. Скриптро барои ҳафтае як маротиба ба нақша гирифтан. Шумо инчунин метавонед онро ба таври дастӣ тавре ки мехоҳед иҷро кунед.
  4. Барои таҳлили минбаъда аз keyword_suggestions.csv истифода баред:
    • аввал_ дидашуда: ин санаест, ки пурсиш бори аввал дар autosuggest пайдо шудааст
    • охирин_ дида: санае, ки пурсиш бори охир дида шудааст
    • нав аст: агар first_seen == last_seen мо инро ба он гузоштем дуруст - Танҳо ин арзишро филтр кунед, то ҷустуҷӯҳои навтаринро дар autosuggest Google дарёфт кунед.

Ин аст рамзи 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

Скрипти Python -ро зеркашӣ кунед

Ту чӣ фикр мекунӣ?

Ин сомона ба воситаи Akismet барои кам кардани спам истифода мешавад. Омӯзед, ки чӣ тавр маълумотҳои худро тафтиш кунед.