Python: Script استخراج خودکار Google از روند برای کلمات کلیدی جستجوی طاقچه شما

اسکریپت پایتون برای گرفتن روندهای پیشنهاد خودکار

همه Google Trends را دوست دارند اما در مورد کلمات کلیدی Long Tail کمی مشکل است. همه ما مسئول را دوست داریم سرویس روند گوگل برای دریافت بینش در مورد رفتار جستجو با این حال ، دو چیز باعث می شود که بسیاری از آن برای کارهای سخت استفاده نکنند.

  1. هنگامی که شما نیاز به پیدا کردن کلمات کلیدی طاقچه جدید، آنجا اطلاعات کافی در Google Trends نیست 
  2. فقدان API رسمی برای ایجاد درخواست برای روندهای گوگل: وقتی ما از ماژول هایی مانند اینها استفاده می کنیم pytrends، پس باید از سرورهای پروکسی استفاده کنیم ، یا اینکه مسدود می شویم. 

در این مقاله ، من اسکریپت پایتون را که برای صادر کردن کلمات کلیدی پرطرفدار از طریق Google Autosuggest نوشته ایم ، به اشتراک می گذارم.

نتایج خودکار را با گذشت زمان واکشی و ذخیره کنید 

فرض کنید ما 1,000 کلمه کلیدی Seed برای ارسال به Google Autosuggest داریم. در عوض ، احتمالاً حدود 200,000 بدست خواهیم آورد دم دراز کلید واژه ها. سپس ، ما باید یک هفته بعد همین کار را انجام دهیم و این مجموعه داده ها را با هم مقایسه کنیم تا به دو سوال پاسخ دهیم:

  • کدام پرسش ها هستند کلمات کلیدی جدید نسبت به آخرین بار؟ این احتمالاً موردی است که ما به آن نیاز داریم. گوگل فکر می کند که این سال ها مهمتر می شوند - با این کار ، ما می توانیم راه حل خودکار Google خود را ایجاد کنیم! 
  • کدام پرسش ها هستند کلمات کلیدی دیگر روندی؟

متن بسیار آسان است و بیشتر کدهایی که من به اشتراک گذاشته ام اینجا کلیک نمایید. کد به روز شده باعث صرفه جویی در داده ها از اجرای گذشته و مقایسه پیشنهادات با گذشت زمان می شود. برای ساده سازی از پایگاه داده مبتنی بر پرونده مانند SQLite اجتناب کردیم - بنابراین تمام ذخیره داده ها از پرونده های CSV زیر استفاده می کنند. این امکان را برای شما فراهم می کند تا پرونده را در Excel وارد کرده و روند کلمات کلیدی خاص را برای تجارت خود کشف کنید.

برای استفاده از این اسکریپت پایتون

  1. مجموعه کلمات کلیدی seed خود را وارد کنید که باید به تکمیل خودکار ارسال شود: keywords.csv
  2. تنظیمات اسکریپت را برای نیاز خود تنظیم کنید:
    • زبان: پیش فرض "en"
    • کشور: پیش فرض "ما"
  3. برنامه نویسی را برنامه ریزی کنید تا هفته ای یک بار اجرا شود. همچنین می توانید آن را به صورت دستی آنطور که می خواهید اجرا کنید.
  4. برای تجزیه و تحلیل بیشتر از keyword_suggestions.csv استفاده کنید:
    • اول_دید: این تاریخی است که پرس و جو برای اولین بار در پیشنهاد خودکار ظاهر شده است
    • آخرین_دیده شده: تاریخی که پرسش برای آخرین بار مشاهده شده است
    • _ جدید است: if first_seen == last_seen ما این را روی تنظیم می کنیم درست - فقط کافی است این مقدار را فیلتر کنید تا جستجوهای پرطرفدار جدید را در پیشنهاد خودکار Google دریافت کنید.

این کد پایتون است

# 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

اسکریپت پایتون را بارگیری کنید

شما چه فکر میکنید؟

این سایت از Akismet برای کاهش هرزنامه استفاده می کند. بدانید که چگونه نظر شما پردازش می شود.