Python: Script Un extras Google Autosuggest de tendințe pentru cuvintele dvs. cheie de căutare de nișă
Toată lumea îi place Google Trends, dar este un pic dificil când vine vorba de cuvinte cheie Long Tail. Cu toții ne place oficialul serviciul de tendințe google pentru a obține informații despre comportamentul de căutare. Cu toate acestea, două lucruri îi împiedică pe mulți să-l folosească pentru muncă solidă;
- Când trebuie să găsești noi cuvinte cheie de nișă, Acolo nu sunt suficiente date pe Google Trends
- Lipsa API-ului oficial pentru a face cereri către tendințele Google: când folosim module precum pytrends, atunci trebuie să folosim servere proxy sau suntem blocați.
În acest articol, voi împărtăși un script Python pe care l-am scris pentru a exporta cuvinte cheie în tendințe prin Google Autosuggest.
Obțineți și stocați rezultate de sugestie automată în timp
Să presupunem că avem 1,000 de cuvinte cheie semințe pentru a fi trimise la Google Autosuggest. În schimb, vom obține probabil aproximativ 200,000 coada lunga Cuvinte cheie. Apoi, trebuie să facem același lucru o săptămână mai târziu și să comparăm aceste seturi de date pentru a răspunde la două întrebări:
- Care sunt interogările cuvinte cheie noi comparativ cu ultima dată? Probabil că acesta este cazul de care avem nevoie. Google consideră că aceste întrebări devin mai semnificative - făcând acest lucru, putem crea propria noastră soluție Google Autosuggest!
- Care sunt interogările cuvintele cheie nu mai sunt în tendințe?
Scriptul este destul de ușor și majoritatea codului l-am împărtășit aici. Codul actualizat salvează datele din rulările anterioare și compară sugestiile în timp. Am evitat bazele de date bazate pe fișiere, cum ar fi SQLite, pentru a simplifica acest lucru - deci toată stocarea datelor utilizează fișiere CSV de mai jos. Acest lucru vă permite să importați fișierul în Excel și să explorați tendințele de nișă ale cuvintelor cheie pentru afacerea dvs.
Pentru a utiliza acest script Python
- Introduceți setul de cuvinte cheie seed care ar trebui trimis la completarea automată: keywords.csv
- Ajustați setările Script pentru nevoile dvs.:
- LIMBA: implicit „en”
- TARA: implicit „noi”
- Programați scriptul să ruleze o dată pe săptămână. De asemenea, îl puteți rula manual după cum doriți.
- Utilizați keyword_suggestions.csv pentru analize suplimentare:
- first_seed: aceasta este data la care interogarea a apărut pentru prima dată în autosuggest
- vazut ultima data: data la care interogarea a fost văzută pentru ultima dată
- e nou: dacă first_seen == last_seen îl setăm la Adevărat - Doar filtrați această valoare pentru a obține noile căutări în tendințe în sugestia automată Google.
Iată Codul Python
# 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