Пајтон: Скрипта Аутосугест на Google за извадок од трендови за клучните зборови за пребарување на лажат
Сите сакаат Google Trends, но малку е незгодно кога станува збор за клучни зборови со долга опашка. На сите ни се допаѓа официјалното лице услуга за трендови на Google за добивање увид во однесувањето на пребарувањето. Сепак, две работи спречуваат многумина да го користат за цврста работа;
- Кога треба да најдете нови ниша клучни зборови, има не е доволно податоци за Google Trends
- Недостаток на официјален API за поставување барања до трендовите на Google: Кога користиме модули како питрендови, тогаш мора да користиме прокси-сервери или ќе се блокираме.
Во оваа статија, ќе споделам Питонски скрипт што го напишавме за да извезуваме клучни зборови во тренд преку Google Autosuggest.
Преземете ги и чувајте ги резултатите од автоматската препорака со текот на времето
Да претпоставиме дека имаме 1,000 клучни зборови за семе што треба да се испраќаат до Google Autosuggest. За возврат, веројатно ќе добиеме околу 200,000 долга опашка клучни зборови. Потоа, треба да го сториме истото една недела подоцна и да ги споредиме овие збирки на податоци за да одговориме на две прашања:
- Кои прашања се нови клучни зборови во споредба со последниот пат? Ова е веројатно случајот што ни треба. Google смета дека тие пребарувања стануваат позначајни - со тоа, можеме да создадеме свое решение за Google Autosuggest!
- Кои прашања се клучни зборови веќе трендовски?
Сценариото е прилично лесно, а повеќето од кодот што го споделив овде. Ажурираниот код ги зачувува податоците од минатите работи и споредувајќи ги предлозите со текот на времето. Избегнавме бази на датотеки базирани на датотеки како SQLite за да биде поедноставно - така што целото складирање на податоци користи CSV-датотеки подолу. Ова ви овозможува да ја увезете датотеката во Excel и да ги истражите нишите трендови на клучни зборови за вашиот бизнис.
Да се искористи ова Питомско сценарио
- Внесете го сетот на клучни зборови за семе што треба да се испрати до автоматското комплетирање: клучни зборови.csv
- Прилагодете ги поставките за сценариото за вашата потреба:
- ЈАЗИК: стандардно „en“
- ЗЕМЈА: стандардно „нас“
- Закажете го сценариото да се извршува еднаш неделно. Можете исто така да го извршите рачно, како што сакате.
- Користете keyword_suggestions.csv за понатамошна анализа:
- прво_видено: ова е датумот кога барањето се појави за прв пат во автоматскиот предлог
- последно виден: датумот на којшто е прегледано барањето за последен пат
- е_ново: ако first_seen == last_seen го поставивме ова на Точно - Само филтрирајте ја оваа вредност за да ги добиете новите пребарувања во тренд во автоматскиот предлог на 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