Python: Niş Axtarış Açar Sözləriniz üçün Google Autosuggest Trends Çıxarışını Yazın

Autosuggest Trendsini Tutmaq üçün Python Script

Hər kəs Google Trendlərini bəyənir, lakin uzun quyruq açar sözlərindən bəhs edərkən biraz çətindir. Hamımız məmuru sevirik google trend xidməti axtarış davranışı haqqında anlayışlar əldə etmək üçün. Bununla birlikdə, iki şey bir çoxunun möhkəm iş üçün istifadə etməsinə mane olur;

  1. Tapmaq lazım olduqda yeni niş açar sözlərvar Google Trends haqqında məlumat kifayət deyil 
  2. Google trendlərinə sorğu vermək üçün rəsmi API çatışmazlığı: kimi modullardan istifadə etdikdə pytrends, sonra proxy serverlərdən istifadə etməliyik, yoxsa bloklanırıq. 

Bu yazıda, Google Autosuggest vasitəsilə trend olan açar sözləri ixrac etmək üçün yazdığımız bir Python Scriptini paylaşacağam.

Zamanla Avtomatik Təklif Nəticələrini əldə edin və saxlayın 

Google Autosuggest-ə göndəriləcək 1,000 Toxum açar sözümüz olduğunu düşünək. Bunun qarşılığında, ehtimal ki, 200,000 civarında pul qazanacağıq uzun quyruq açar sözlər. Sonra eyni işi bir həftə sonra etməliyik və iki suala cavab vermək üçün bu məlumat dəstlərini müqayisə etməliyik:

  • Hansı suallar yeni açar sözlər son dəfə müqayisədə? Ehtimal etdiyimiz vəziyyət belədir. Google bu sorğuların daha əhəmiyyətli olduğunu düşünür - bunu etməklə öz Google Autosuggest həllimizi yarada bilərik! 
  • Hansı suallar açar sözlər artıq deyil trend?

Ssenari olduqca asandır və kodun çox hissəsini paylaşdım burada. Yenilənmiş kod, keçmiş çalışmalardakı məlumatları saxlayır və təklifləri zamanla müqayisə edir. SQLite kimi fayl əsaslı verilənlər bazalarından istifadəni asanlaşdırmaqdan çəkindik - buna görə bütün məlumat saxlama aşağıdakı CSV sənədlərindən istifadə edir. Bu, faylı Excel-də idxal etməyinizə və işiniz üçün niş açar söz meyllərini araşdırmanıza imkan verir.

Bu Python Scriptindən istifadə etmək üçün

  1. Avtomatik tamamlamaya göndərilməli olan toxum açar sözlər dəstinizi daxil edin: keywords.csv
  2. Script parametrlərini ehtiyacınız üçün tənzimləyin:
    • DİL: defolt “en”
    • ÖLKƏ: defolt “biz”
  3. Ssenarini həftədə bir dəfə işləməyi planlaşdırın. İstədiyiniz kimi əl ilə də idarə edə bilərsiniz.
  4. Əlavə təhlil üçün keyword_suggestions.csv istifadə edin:
    • ilk_görüş: bu sorğunun ilk dəfə avtomatik təklif olaraq ortaya çıxdığı tarixdir
    • son görünmə: sorğunun son dəfə göründüyü tarix
    • yeni: first_seen == last_seen varsa bunu təyin etdik Doğru - Google autosuggest-də yeni trend axtarışları əldə etmək üçün bu dəyəri süzün.

Budur Python Kodu

# 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 Scriptini yükləyin

Siz nə düşünürsünüz?

Bu sayt spam azaldılması üçün Akismet istifadə edir. Yorumunuzun necə işləndiyini öyrənin.