Python: сценарий Google сіздің іздеу кілт сөздері үшін трендтердің Google Autosuggest үзіндісі

Python сценарийі автоматты ұсыныстардың тенденциясын сақтау үшін

Google Trends барлығына ұнайды, бірақ Long Tail кілт сөздері туралы айтатын болсақ, бұл өте қиын. Шенеунік бәрімізге ұнайды google trend қызметі іздеу тәртібі туралы түсінік алу үшін. Алайда, екі нәрсе көпшіліктің оны қатты жұмыс үшін пайдалануына жол бермейді;

  1. Сізге керек кезде жаңа тауашалық кілт сөздер, Ана жерде Google Trends бойынша деректер жеткіліксіз 
  2. Google трендтеріне сұраныстар жасауға арналған ресми API болмауы: біз модульдерді қолданған кезде питрендтер, содан кейін біз прокси-серверлерді пайдалануымыз керек немесе біз бұғатталамыз. 

Бұл мақалада мен Google Autosuggest арқылы трендті кілт сөздерді экспорттау үшін жазған Python сценарийімен бөлісемін.

Автоматты ұсыныстарды уақыт бойынша алыңыз және сақтаңыз 

Google Autosuggest-ке жіберу үшін бізде 1,000 Seed кілт сөзі бар делік. Қайтарып, біз 200,000 XNUMX шамасында аламыз ұзын құйрық кілт сөздер. Содан кейін, біз бір аптадан кейін дәл осылай жасауымыз керек және екі сұраққа жауап беру үшін осы мәліметтер жиынтығын салыстыруымыз керек:

  • Қандай сұраулар жаңа кілт сөздер өткен уақытпен салыстырғанда? Бұл бізге қажет жағдай болуы мүмкін. Google бұл сұрақтардың мәні артып келеді деп ойлайды - осылайша біз өзіміздің Google Autosuggest шешімімізді жасай аламыз! 
  • Қандай сұраулар енді кілт сөздер тренд?

Сценарий өте оңай және мен бөліскен кодтың көп бөлігі Мұнда. Жаңартылған код өткен уақыттағы деректерді сақтайды және уақыт бойынша ұсыныстарды салыстырады. Қарапайым ету үшін біз SQLite сияқты файлға негізделген дерекқорлардан аулақ болдық, сондықтан барлық деректерді сақтау төмендегі CSV файлдарын пайдаланады. Бұл сізге файлды Excel-ге импорттауға және сіздің бизнесіңіздің кілт сөздік тенденцияларын зерттеуге мүмкіндік береді.

Осы Python сценарийін пайдалану үшін

  1. Автотолтыруға жіберілетін тұқым кілт сөздерінің жиынтығын енгізіңіз: keywords.csv
  2. Сценарий параметрлерін қажеттілікке қарай өзгертіңіз:
    • ТІЛ: әдепкі “en”
    • ЕЛ: әдепкі “біз”
  3. Сценарийді аптасына бір рет орындауды жоспарлаңыз. Сондай-ақ, оны өзіңіз қалағандай қолмен басқаруға болады.
  4. Әрі қарай талдау үшін keyword_suggestions.csv пайдаланыңыз:
    • бірінші_көру: бұл сұрау бірінші рет автоматты ұсыныста пайда болған күн
    • соңғы_көру: сұрау соңғы рет көрсетілген күн
    • жаңа_жаңа: егер бірінші_көру == соңғы_көру болса, біз мұны орнаттық рас - 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 сценарийін жүктеп алыңыз

Сен не ойлайсың?

Бұл сайт спамның төмендеуі үшін Akismet пайдаланады. Деректеріңіздің қалай өңделетінін біліңіз.