Python: نص برمجي مقتطف من اقتراح Google التلقائي للاتجاهات الخاصة بكلمات البحث المتخصصة

نص بايثون لالتقاط اتجاهات الاقتراح التلقائي

يحب الجميع Google Trends ، لكنها صعبة بعض الشيء عندما يتعلق الأمر بالكلمات الرئيسية Long Tail. كلنا نحب المسؤول خدمة اتجاهات جوجل للحصول على رؤى حول سلوك البحث. ومع ذلك ، هناك شيئان يمنعان الكثيرين من استخدامه للعمل الجاد ؛

  1. عندما تريد أن تجد كلمات رئيسية متخصصة جديدة، هناك بيانات Google Trends غير كافية 
  2. عدم وجود واجهة برمجة تطبيقات رسمية لتقديم طلبات إلى اتجاهات google: عندما نستخدم وحدات مثل pytrends، ثم يتعين علينا استخدام خوادم بروكسي ، وإلا فسيتم حظرنا. 

في هذه المقالة ، سوف أشارك برنامج Python Script الذي كتبناه لتصدير الكلمات الرئيسية الشائعة عبر اقتراح Google التلقائي.

جلب وتخزين نتائج الاقتراح التلقائي بمرور الوقت 

لنفترض أن لدينا 1,000 كلمة أساسية للبذور لإرسالها إلى اقتراح Google التلقائي. في المقابل ، من المحتمل أن نحصل على حوالي 200,000 ذيل طويل الكلمات الدالة. بعد ذلك ، نحتاج إلى فعل الشيء نفسه بعد أسبوع واحد ومقارنة مجموعات البيانات هذه للإجابة على سؤالين:

  • ما هي الاستفسارات كلمات رئيسية جديدة مقارنة بآخر مرة؟ ربما هذا هو الحال الذي نحتاجه. تعتقد Google أن هذه الاستعلامات أصبحت أكثر أهمية - من خلال القيام بذلك ، يمكننا إنشاء حل اقتراح Google التلقائي الخاص بنا! 
  • ما هي الاستفسارات الكلمات الرئيسية لم تعد الشائع؟

النص سهل للغاية ، ومعظم الكود الذي قمت بمشاركته هنا. يحفظ الكود المحدث البيانات من عمليات التشغيل السابقة ويقارن الاقتراحات بمرور الوقت. لقد تجنبنا قواعد البيانات المستندة إلى الملفات مثل SQLite لتبسيط الأمر - لذا فإن تخزين البيانات بالكامل يستخدم ملفات CSV أدناه. يمكّنك هذا من استيراد الملف في Excel واستكشاف اتجاهات الكلمات الرئيسية المتخصصة لعملك.

لاستخدام هذا البرنامج النصي Python

  1. أدخل مجموعة الكلمات الرئيسية الأولية التي يجب إرسالها إلى الإكمال التلقائي: keywords.csv
  2. اضبط إعدادات البرنامج النصي حسب حاجتك:
    • LANGUAGE: الافتراضي "en"
    • COUNTRY: الافتراضي "نحن"
  3. جدولة البرنامج النصي للتشغيل مرة واحدة في الأسبوع. يمكنك أيضًا تشغيله يدويًا كما تريد.
  4. استخدم keyword_suggestions.csv لمزيد من التحليل:
    • الروية الأولى: هذا هو التاريخ الذي ظهر فيه الاستعلام لأول مرة في الاقتراح التلقائي
    • اخر ظهور: التاريخ الذي تمت فيه مشاهدة الاستعلام للمرة الأخيرة
    • جديد: إذا 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

قم بتنزيل Python Script

ما رأيك؟

يستخدم هذا الموقع نظام Akismet لتقليل الرسائل الضارة. تعرف كيف تتم معالجة بيانات تعليقك.