Python: Script Google ავტომატური შემოთავაზების ტენდენციები თქვენი ნიშნის საძიებო საკვანძო სიტყვებისთვის
ყველას მოსწონს Google Trends, მაგრამ ეს ცოტა რთულია, როდესაც საქმე ეხება Long Tail საკვანძო სიტყვებს. ყველას მოგვწონს ოფიციალური Google– ის ტენდენციების სერვისი საძიებო ქცევის შესახებ ინფორმაციის მისაღებად. ამასთან, ორი რამ უშლის ხელს ბევრს გამოიყენოს იგი მყარი სამუშაოსთვის;
- როცა უნდა მოძებნო ახალი ნიშის საკვანძო სიტყვები, იქ არ არის საკმარისი მონაცემები Google Trends- ზე
- ოფიციალური API– ს ნაკლებობა Google– ის ტენდენციებზე მოთხოვნების მისაღებად: როდესაც ჩვენ ვიყენებთ მსგავს მოდულებს პოტენციური ტენდენციები, მაშინ უნდა გამოვიყენოთ მარიონეტული სერვერები, ან დაგვიბლოკება.
ამ სტატიაში მე გაგიზიარებთ Python Script- ს, რომელიც ჩვენ დავწერეთ, რათა გაავრცელოთ პოპულარული საკვანძო სიტყვები Google Autosuggest- ის მეშვეობით.
დროთა განმავლობაში მიიღეთ ავტომატური შემოთავაზების შედეგები და შეინახეთ
დავუშვათ, რომ ჩვენ გვაქვს 1,000 Seed საკვანძო სიტყვა Google Autosuggest- ში გასაგზავნად. სამაგიეროდ, ალბათ, დაახლოებით 200,000 მივიღებთ გრძელი კუდი საკვანძო სიტყვები. შემდეგ, იგივე უნდა გავაკეთოთ ერთი კვირის შემდეგ და შევადაროთ ეს მონაცემთა ნაკრები, რომ ვუპასუხოთ ორ კითხვას:
- რომელი მოთხოვნებია ახალი საკვანძო სიტყვები ბოლო დროსთან შედარებით? ეს ალბათ ის შემთხვევაა, რაც ჩვენ გვჭირდება. Google მიიჩნევს, რომ ეს მოთხოვნები უფრო მნიშვნელოვანი ხდება - ამით ჩვენ შეგვიძლია შევქმნათ ჩვენი საკუთარი Google Autosuggest გადაწყვეტა!
- რომელი მოთხოვნებია საკვანძო სიტყვები აღარ არის ტრენდულია?
სცენარი საკმაოდ მარტივია და კოდის უმეტესობა, რომელიც მე გავუზიარე აქ დაწკაპუნებით. განახლებული კოდი ზოგავს მონაცემებს წარსული გაშვებებისაგან და დროთა განმავლობაში შეთავაზებების შედარებას. ჩვენ თავიდან ავიცილეთ ფაილზე დაფუძნებული მონაცემთა ბაზა, როგორიცაა SQLite, რომ ეს მარტივია - ასე რომ, ყველა მონაცემთა შენახვა იყენებს CSV ფაილებს ქვემოთ. ეს საშუალებას გაძლევთ ფაილის იმპორტირება Excel- ში და შეისწავლოთ თქვენი ბიზნესის საკვანძო სიტყვების ნიშნები.
გამოვიყენოთ ეს Python Script
- შეიყვანეთ თქვენი სათესლე საკვანძო სიტყვების ნაკრები, რომელიც უნდა გაიგზავნოს ავტოკომპრენზე: keywordss.csv
- შეცვალეთ სკრიპტის პარამეტრები თქვენი საჭიროებისთვის:
- ენა: ნაგულისხმევი ”en”
- ქვეყანა: ნაგულისხმევი ”ჩვენ”
- დანიშნეთ სკრიპტი კვირაში ერთხელ. ასევე შეგიძლიათ ხელით აწარმოოთ, როგორც გსურთ.
- შემდგომი ანალიზისთვის გამოიყენეთ keyword_suggestions.csv:
- პირველი_ნახული: ეს არის თარიღი, როდესაც მოთხოვნა პირველად გამოჩნდა ავტოშეთავაზებაში
- ბოლო ნახვა: თარიღი, როდესაც მოთხოვნა ბოლოს ჩანს
- ახალია: თუ first_seen == last_seen ჩვენ ამას ვაყენებთ True - უბრალოდ გაფილტრეთ ეს მნიშვნელობა, რომ მიიღოთ Google– ის ავტოსუგეტში ახალი ტრენდული ძიებები.
აი Python Code
# 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