Python: Script Ein Google Autosuggest-Auszug von Trends für Ihre Nischen-Suchschlüsselwörter
Jeder mag Google Trends, aber es ist etwas schwierig, wenn es um Long Tail-Keywords geht. Wir alle mögen den Beamten Google Trends Service um Einblicke in das Suchverhalten zu erhalten. Zwei Dinge hindern jedoch viele daran, es für solide Arbeit zu verwenden.
- Wenn Sie finden müssen neue Nischenschlüsselwörter, Dort ist nicht genug Daten auf Google Trends
- Fehlende offizielle API für Anfragen an Google-Trends: Wenn wir Module wie verwenden Pytrends, dann müssen wir Proxyserver verwenden, sonst werden wir blockiert.
In diesem Artikel werde ich ein Python-Skript veröffentlichen, das wir zum Exportieren von Trendschlüsselwörtern über Google Autosuggest geschrieben haben.
Abrufen und Speichern von Autosuggest-Ergebnissen im Laufe der Zeit
Angenommen, wir haben 1,000 Seed-Keywords, die an Google Autosuggest gesendet werden sollen. Im Gegenzug werden wir wahrscheinlich rund 200,000 bekommen Longtail Schlüsselwörter. Dann müssen wir eine Woche später dasselbe tun und diese Datensätze vergleichen, um zwei Fragen zu beantworten:
- Welche Fragen sind neue Schlüsselwörter im Vergleich zum letzten Mal? Dies ist wahrscheinlich der Fall, den wir brauchen. Google glaubt, dass diese Abfragen immer wichtiger werden. Auf diese Weise können wir unsere eigene Google Autosuggest-Lösung erstellen!
- Welche Fragen sind Schlüsselwörter nicht mehr Trend?
Das Skript ist recht einfach und der größte Teil des Codes, den ich geteilt habe hier. Der aktualisierte Code speichert die Daten aus früheren Läufen und vergleicht die Vorschläge im Laufe der Zeit. Wir haben dateibasierte Datenbanken wie SQLite vermieden, um dies zu vereinfachen. Daher verwendet der gesamte Datenspeicher die folgenden CSV-Dateien. Auf diese Weise können Sie die Datei in Excel importieren und Nischen-Keyword-Trends für Ihr Unternehmen untersuchen.
So verwenden Sie dieses Python-Skript
- Geben Sie Ihren Startschlüsselwortsatz ein, der an die automatische Vervollständigung gesendet werden soll: keywords.csv
- Passen Sie die Skripteinstellungen an Ihre Bedürfnisse an:
- SPRACHE: Standard "en"
- LAND: Standard "wir"
- Planen Sie die Ausführung des Skripts einmal pro Woche. Sie können es auch manuell ausführen, wie Sie möchten.
- Verwenden Sie keyword_suggestions.csv für die weitere Analyse:
- Zum ersten Mal gesehen: Dies ist das Datum, an dem die Abfrage zum ersten Mal im Autosuggest angezeigt wurde
- zuletzt gesehen: das Datum, an dem die Abfrage zum letzten Mal gesehen wurde
- ist neu: if first_seen == last_seen setzen wir dies auf Wahre - Filtern Sie einfach nach diesem Wert, um die neuen Trend-Suchanfragen im Google-Autosuggest abzurufen.
Hier ist der 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