
Python: Σενάριο A Αυτόματο απόσπασμα από το Google Trends για τις εξειδικευμένες λέξεις-κλειδιά αναζήτησης
Σε όλους αρέσουν τα Google Trends, αλλά είναι λίγο δύσκολο όταν πρόκειται για λέξεις -κλειδιά Long Tail. Σε όλους μας αρέσει το επίσημο υπηρεσία τάσεων google για να λάβετε πληροφορίες σχετικά με τη συμπεριφορά αναζήτησης. Ωστόσο, δύο πράγματα εμποδίζουν πολλούς να το χρησιμοποιούν για σταθερή εργασία.
- Όταν πρέπει να βρείτε νέες εξειδικευμένες λέξεις-κλειδιά, εκεί δεν είναι αρκετά δεδομένα στο Google Trends
- Έλλειψη επίσημου API για την υποβολή αιτημάτων για τάσεις στο google: Όταν χρησιμοποιούμε ενότητες όπως πυττάρες, τότε πρέπει να χρησιμοποιήσουμε διακομιστές μεσολάβησης, ή θα μπλοκαριστούμε.
Σε αυτό το άρθρο, θα μοιραστώ ένα Python Script που έχουμε γράψει για να εξάγουμε λέξεις -κλειδιά με τάσεις μέσω του Google Autosuggest.
Ανάκτηση και αποθήκευση αποτελεσμάτων αυτόματης πρότασης με την πάροδο του χρόνου
Ας υποθέσουμε ότι έχουμε 1,000 λέξεις-κλειδιά για αποστολή στο Google Autosuggest. Σε αντάλλαγμα, πιθανότατα θα λάβουμε περίπου 200,000 μακριά ουρά λέξεις-κλειδιά. Στη συνέχεια, πρέπει να κάνουμε το ίδιο μία εβδομάδα αργότερα και να συγκρίνουμε αυτά τα σύνολα δεδομένων για να απαντήσουμε σε δύο ερωτήσεις:
- Ποια είναι τα ερωτήματα νέες λέξεις-κλειδιά σε σύγκριση με την τελευταία φορά; Αυτή είναι πιθανώς η περίπτωση που χρειαζόμαστε. Η Google πιστεύει ότι αυτά τα ερωτήματα γίνονται πιο σημαντικά - με αυτόν τον τρόπο, μπορούμε να δημιουργήσουμε τη δική μας λύση αυτόματης προσφοράς Google!
- Ποια είναι τα ερωτήματα λέξεις-κλειδιά πλέον τάσεις;
Το σενάριο είναι αρκετά εύκολο και το μεγαλύτερο μέρος του κώδικα που μοιράστηκα εδώ. Ο ενημερωμένος κώδικας αποθηκεύει τα δεδομένα από προηγούμενες εργασίες και συγκρίνει τις προτάσεις με την πάροδο του χρόνου. Αποφύγαμε τις βάσεις δεδομένων που βασίζονται σε αρχεία, όπως το SQLite, για να το κάνουμε απλό - επομένως όλη η αποθήκευση δεδομένων χρησιμοποιεί αρχεία CSV παρακάτω. Αυτό σας επιτρέπει να εισαγάγετε το αρχείο στο Excel και να εξερευνήσετε εξειδικευμένες τάσεις λέξεων-κλειδιών για την επιχείρησή σας.
Για να χρησιμοποιήσετε αυτό το σενάριο Python
- Εισαγάγετε το αρχικό σύνολο λέξεων-κλειδιών που πρέπει να σταλεί στην αυτόματη συμπλήρωση: keywords.csv
- Προσαρμόστε τις ρυθμίσεις σεναρίου για τις ανάγκες σας:
- ΓΛΩΣΣΑ: προεπιλεγμένο "en"
- ΧΩΡΑ: προεπιλογή "εμάς"
- Προγραμματίστε το σενάριο για εκτέλεση μία φορά την εβδομάδα. Μπορείτε επίσης να το εκτελέσετε χειροκίνητα όπως θέλετε.
- Χρησιμοποιήστε το keyword_suggestions.csv για περαιτέρω ανάλυση:
- Πρώτο_δεν: αυτή είναι η ημερομηνία στην οποία εμφανίστηκε το ερώτημα για πρώτη φορά στην αυτόματη πρόταση
- εθεάθη τελευταία: η ημερομηνία όπου το ερώτημα εμφανίστηκε για τελευταία φορά
- είναι νέο: if first_seen == last_seen το ρυθμίζουμε σε Οι αληθινοί - Απλώς φιλτράρετε αυτήν την τιμή για να λάβετε τις νέες δημοφιλείς αναζητήσεις στην αυτόματη πρόταση Google.
Εδώ είναι ο κώδικας 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