Python: Script Isang Google Autosuggest Extract ng Trends para sa Iyong Mga Keyword sa Paghahanap sa Niche
Gusto ng lahat ang Google Trends, ngunit medyo nakakalito pagdating sa Long Tail Keywords. Lahat tayo gusto ang opisyal serbisyo sa uso sa google para sa pagkuha ng mga pananaw sa pag-uugali sa paghahanap. Gayunpaman, dalawang bagay ang pumipigil sa marami sa paggamit nito para sa solidong trabaho;
- Kapag kailangan mong hanapin bagong mga keyword ng angkop na lugar, doon ay hindi sapat na data sa Google Trends
- Kakulangan ng opisyal na API para sa paggawa ng mga kahilingan sa mga uso sa google: Kapag gumawa kami ng paggamit ng mga module na gusto pytrends, pagkatapos ay kailangan nating gumamit ng mga proxy server, o mai-block kami.
Sa artikulong ito, magbabahagi ako ng isang Python Script na isinulat namin upang mai-export ang mga nagte-trend na keyword sa pamamagitan ng Google Autosuggest.
Kunin at Iimbak ang Mga Resulta ng Autosuggest Sa paglipas ng Oras
Ipagpalagay na mayroon kaming 1,000 mga keyword ng Binhi na ipapadala sa Google Autosuggest. Bilang kapalit, marahil makakakuha tayo ng halos 200,000 mahabang buntot mga keyword. Pagkatapos, kailangan nating gawin ang parehong isang linggo mamaya at ihambing ang mga dataset na ito upang sagutin ang dalawang mga katanungan:
- Aling mga query ang mga bagong keyword kumpara sa huling oras? Marahil ito ang kaso na kailangan natin. Iniisip ng Google na ang mga query na iyon ay nagiging mas makabuluhan - sa pamamagitan nito, makakalikha tayo ng aming sariling solusyon sa Google Autosuggest!
- Aling mga query ang ang mga keyword ay hindi na nagte-trend?
Medyo madali ang script, at ang karamihan sa code na ibinahagi ko dito. Sine-save ng na-update na code ang data mula sa mga nakaraang pagpapatakbo at paghahambing ng mga mungkahi sa paglipas ng panahon. Iniwasan namin ang mga database na nakabatay sa file tulad ng SQLite upang gawing simple - kaya't ang lahat ng imbakan ng data ay gumagamit ng mga CSV file sa ibaba. Pinapayagan ka nitong i-import ang file sa Excel at galugarin ang mga trend ng keyword ng angkop na lugar para sa iyong negosyo.
Upang magamit Ang Python Script na Ito
- Ipasok ang iyong hanay ng keyword ng binhi na dapat ipadala sa autocomplete: keywords.csv
- Ayusin ang mga setting ng Script para sa iyong pangangailangan:
- WIKA: default na “en”
- BANSA: default na “kami”
- Iiskedyul ang iskrip upang tumakbo nang isang beses sa isang linggo. Maaari mo ring patakbuhin ito nang manu-mano ayon sa gusto mo.
- Gumamit ng keyword_suggestions.csv para sa karagdagang pagsusuri:
- unang_nakita: ito ang petsa kung saan lumitaw ang query sa unang pagkakataon sa autosuggest
- huling nakita: ang petsa kung saan nakita ang query sa huling pagkakataon
- ay bago: kung first_seen == huling_seen itinakda namin ito sa Totoo - Salain lamang ang halagang ito upang makuha ang mga bagong nagte-trend na paghahanap sa Google autosuggest.
Narito ang 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