פייתון: סקריפט תמצית אוטומטית של גוגל של מגמות עבור מילות המפתח לחיפוש הנישה שלך

סקריפט פייתון כדי ללכוד מגמות אוטומטיות

כולם אוהבים את Google Trends, אבל זה קצת מסובך כשמדובר במילות מפתח של זנב ארוך. כולנו אוהבים את הפקיד שירות הטרנדים של לקבלת תובנות על התנהגות החיפוש. עם זאת, שני דברים מונעים מרבים להשתמש בו לעבודה סולידית;

  1. מתי אתה צריך למצוא מילות מפתח נישה חדשות, שם אין מספיק נתונים ב- Google Trends 
  2. היעדר ממשק API רשמי להגשת בקשות לטרנדים בגוגל: כאשר אנו משתמשים במודולים כמו טרנדיםואז עלינו להשתמש בשרתי פרוקסי, או שאנחנו נחסמים. 

במאמר זה אשתתף בסקריפט פייתון שכתבנו כדי לייצא מילות מפתח פופולריות באמצעות הצעה אוטומטית של גוגל.

אחזר ושמור תוצאות של הצעה אוטומטית לאורך זמן 

נניח שיש לנו 1,000 מילות מפתח של זרעים שיישלחו אל Google Autosuggest. בתמורה, כנראה נקבל כ -200,000 זנב ארוך מילות מפתח. לאחר מכן, עלינו לעשות את אותו הדבר כעבור שבוע ולהשוות מערכי נתונים אלה כדי לענות על שתי שאלות:

  • אילו שאילתות הן מילות מפתח חדשות לעומת הפעם האחרונה? זה כנראה המקרה שאנחנו צריכים. גוגל חושבת שהשאילתות הללו הופכות משמעותיות יותר - בכך נוכל ליצור פתרון משלנו אוטומטי של Google! 
  • אילו שאילתות הן מילות מפתח כבר לא מגמות?

התסריט הוא די קל, ורוב הקוד ששיתפתי כאן. הקוד המעודכן שומר את הנתונים מריצות קודמות ומשווה את ההצעות לאורך זמן. התחמקנו ממסדי נתונים מבוססי קבצים כמו SQLite כדי להפוך את זה לפשוט - כך שכל אחסון הנתונים משתמש בקבצי CSV למטה. זה מאפשר לך לייבא את הקובץ ל- Excel ולחקור מגמות של מילות מפתח נישה לעסק שלך.

כדי להשתמש בסקריפט פייתון זה

  1. הזן את קבוצת מילות המפתח שלך שיש לשלוח להשלמה האוטומטית: keywords.csv
  2. התאם את הגדרות הסקריפט לצורך שלך:
    • LANGUAGE: ברירת מחדל "en"
    • COUNTRY: ברירת המחדל "אנחנו"
  3. תזמן את הפעלת התסריט פעם בשבוע. אתה יכול גם להפעיל אותו באופן ידני כרצונך.
  4. השתמש ב- keyword_suggestions.csv לניתוח נוסף:
    • נראה לראשונה: זהו התאריך בו הופיעה השאילתה בפעם הראשונה בהצעה האוטומטית
    • נראה לאחרונה: התאריך בו נראתה השאילתה בפעם האחרונה
    • זה חדש: אם first_seen == last_seen הגדרנו את זה ל- נכון - פשוט סנן על ערך זה כדי לקבל את החיפושים החדשים והמגמתיים בהצעה האוטומטית של גוגל.

הנה קוד הפייתון

# 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 כדי להפחית דואר זבל. למד כיצד הנתונים שלך מעובדים.