Python: Sgript Detholiad Tueddiadau Awtomatig Google ar gyfer Eich Allweddeiriau Chwilio arbenigol

Sgript Python I Gipio Tueddiadau Awtomatig

Mae pawb yn hoffi Google Trends, ond mae ychydig yn anodd o ran Allweddeiriau Cynffon Hir. Rydyn ni i gyd yn hoffi'r swyddog gwasanaeth tueddiadau google am gael mewnwelediadau ar yr ymddygiad chwilio. Fodd bynnag, mae dau beth yn atal llawer rhag ei ​​ddefnyddio ar gyfer gwaith solet;

  1. Pan fydd angen i chi ddod o hyd allweddeiriau arbenigol newydd, yno ddim yn ddigon o ddata ar Google Trends 
  2. Diffyg API swyddogol ar gyfer gwneud ceisiadau i dueddiadau google: Pan ddefnyddiwn fodiwlau fel pytrends, yna mae'n rhaid i ni ddefnyddio gweinyddwyr dirprwyol, neu rydyn ni'n cael ein blocio. 

Yn yr erthygl hon, byddaf yn rhannu Sgript Python rydym wedi'i ysgrifennu i allforio allweddeiriau sy'n tueddu trwy Google Autosuggest.

Ffetch a Storiwch Ganlyniadau Autosuggest Dros Amser 

Tybiwch fod gennym 1,000 o eiriau allweddol Hadau i'w hanfon at Google Autosuggest. Yn gyfnewid, mae'n debyg y cawn oddeutu 200,000 longtail geiriau allweddol. Yna, mae angen i ni wneud yr un peth wythnos yn ddiweddarach a chymharu'r setiau data hyn i ateb dau gwestiwn:

  • Pa ymholiadau yw allweddeiriau newydd o'i gymharu â'r tro diwethaf? Mae'n debyg bod hyn yn wir yr ydym ei angen. Mae Google o'r farn bod yr ymholiadau hynny'n dod yn fwy arwyddocaol - trwy wneud hynny, gallwn greu ein datrysiad Google Autosuggest ein hunain! 
  • Pa ymholiadau yw allweddeiriau ddim mwyach yn tueddu?

Mae'r sgript yn eithaf hawdd, a'r rhan fwyaf o'r cod a rannais yma. Mae'r cod wedi'i ddiweddaru yn arbed y data o rediadau'r gorffennol a chymharu'r awgrymiadau dros amser. Fe wnaethom osgoi cronfeydd data yn seiliedig ar ffeiliau fel SQLite i'w gwneud yn syml - felly mae'r holl storio data yn defnyddio ffeiliau CSV isod. Mae hyn yn eich galluogi i fewnforio'r ffeil yn Excel ac archwilio tueddiadau allweddair arbenigol ar gyfer eich busnes.

I Ddefnyddio'r Sgript Python hon

  1. Rhowch eich set allweddair hadau y dylid eu hanfon at yr awtocomplete: allweddeiriau.csv
  2. Addaswch y gosodiadau Sgript ar gyfer eich angen:
    • IAITH: “en” diofyn
    • GWLAD: “ni” diofyn
  3. Trefnwch y sgript i redeg unwaith yr wythnos. Gallwch hefyd ei redeg â llaw fel yr hoffech chi.
  4. Defnyddiwch allweddair_suggestions.csv i gael dadansoddiad pellach:
    • cyntaf_seen: dyma'r dyddiad yr ymddangosodd yr ymholiad am y tro cyntaf yn yr awtosuggest
    • last_seen: y dyddiad y gwelwyd yr ymholiad am y tro olaf
    • is_new: if first_seen == last_seen rydyn ni'n gosod hwn iddo Gwir - Dim ond hidlo ar y gwerth hwn i gael y chwiliadau tueddu newydd yn autosuggest Google.

Dyma'r Cod 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

Dadlwythwch Sgript Python

Beth ydych chi'n feddwl?

Mae'r wefan hon yn defnyddio Akismet i leihau sbam. Dysgwch sut mae eich data sylwadau yn cael ei brosesu.