Python: Скрипт Google Autosuggest Extract of Trends for Your Niche Search Keywords

Python Script за улавяне на тенденции за автоматично предлагане

Всички харесват Google Trends, но е малко сложно, когато става въпрос за Long Tail Keywords. Всички харесваме официалното услуга на Google за тенденции за получаване на прозрения за поведението при търсене. Две неща обаче пречат на мнозина да го използват за солидна работа;

  1. Когато трябва да намерите нови нишови ключови думи, там няма достатъчно данни в Google Trends 
  2. Липса на официален API за отправяне на заявки към Google тенденции: Когато използваме модули като питренд, тогава трябва да използваме прокси сървъри, или ще бъдем блокирани. 

В тази статия ще споделя скрипт на Python, който сме написали за експортиране на популярни ключови думи чрез Google Autosuggest.

Извличайте и съхранявайте резултатите от автосугестирането с течение на времето 

Да предположим, че имаме 1,000 ключови думи за семена, които да бъдат изпратени до Google Autosuggest. В замяна вероятно ще получим около 200,000 XNUMX дълга опашка ключови думи. След това трябва да направим същото една седмица по-късно и да сравним тези набори от данни, за да отговорим на два въпроса:

  • Кои заявки са нови ключови думи в сравнение с последния път? Това вероятно е случаят, от който се нуждаем. Google смята, че тези заявки стават все по-значими - като правим това, можем да създадем наше собствено решение на Google Autosuggest! 
  • Кои заявки са ключови думи вече не тенденция?

Скриптът е доста лесен и по-голямата част от кода споделих тук. Актуализираният код запазва данните от минали тиражи и сравняване на предложенията във времето. Избягвахме базирани на файлове бази данни като SQLite, за да улесним - така че цялото съхранение на данни използва CSV файлове по-долу. Това ви позволява да импортирате файла в Excel и да изследвате тенденциите в ключовите думи за вашия бизнес.

За да използвате този скрипт на Python

  1. Въведете набора си от ключови думи, който трябва да бъде изпратен на автодовършването: keywords.csv
  2. Настройте настройките на скрипта според вашите нужди:
    • ЕЗИК: по подразбиране “en”
    • ДЪРЖАВА: по подразбиране „ние“
  3. Планирайте скрипта да се изпълнява веднъж седмично. Можете също да го стартирате ръчно, както искате.
  4. Използвайте keyword_suggestions.csv за по-нататъшен анализ:
    • първо_видяно: това е датата, на която заявката се появи за първи път в автосугеста
    • последно видян: датата, на която заявката е видяна за последно
    • е нов: ако 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

Изтеглете Python Script

Какво мислите?

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните за коментарите ви.