Python: Skript Një Ekstrakt Autosuggest Google i Trendeve për Fjalët kyçe të kërkimit tuaj të ngrohtë

Skript Python për të kapur trendet e autosuggest

Të gjithë i pëlqejnë Google Trends, por është paksa e ndërlikuar kur bëhet fjalë për Fjalët kyçe të Long Tail. Të gjithë na pëlqen zyrtari shërbimi i trendeve google për marrjen e njohurive për sjelljen e kërkimit. Sidoqoftë, dy gjëra i ndalojnë shumë veta ta përdorin atë për punë solide;

  1. Kur të duhet të gjesh fjalë kyçe të reja të ngrohta, atje nuk janë të dhëna të mjaftueshme në Google Trends 
  2. Mungesa e API zyrtar për të bërë kërkesa në trendet e Google: Kur përdorim module si trendet pytrende, atëherë duhet të përdorim serverë proxy, ose bllokohemi. 

Në këtë artikull, unë do të ndaj një Skript Python që kemi shkruar për të eksportuar fjalë kyçe në trend përmes Google Autosuggest.

Merrni dhe ruani rezultatet e autosuggest me kalimin e kohës 

Supozoni se kemi 1,000 fjalë kyçe të farës që duhen dërguar te Google Autosuggest. Në kthim, ne ndoshta do të marrim rreth 200,000 bisht i gjate fjalë kyçe. Pastaj, duhet të bëjmë të njëjtën gjë një javë më vonë dhe t'i krahasojmë këto grupe të dhënash për t'iu përgjigjur dy pyetjeve:

  • Cilat pyetje janë fjalë kyçe të reja krahasuar me heren e fundit? Ky është ndoshta rasti që na duhet. Google mendon se ato pyetje po bëhen më domethënëse - duke bërë kështu, ne mund të krijojmë zgjidhjen tonë Google Autosuggest! 
  • Cilat pyetje janë fjalët kyçe jo më në trend?

Skenari është mjaft i lehtë dhe shumica e kodit që kam ndarë këtu. Kodi i azhurnuar kursen të dhënat nga ekzekutimet e kaluara dhe krahasimin e sugjerimeve me kalimin e kohës. Ne shmanguam bazat e të dhënave të bazuara në skedarë si SQLite për ta bërë më të thjeshtë - kështu që i gjithë ruajtja e të dhënave po përdor skedarët CSV më poshtë. Kjo ju mundëson të importoni skedarin në Excel dhe të eksploroni tendencat e fjalëve kyçe për biznesin tuaj.

Për të përdorur këtë skenar Python

  1. Vendosni grupin tuaj të fjalëve kyçe që duhet t'i dërgohet kompletimit automatik: fjalen. Csv
  2. Rregulloni cilësimet e Skriptit për nevojën tuaj:
    • GJUHA: parazgjedhur “en”
    • VENDI: parazgjedhja "ne"
  3. Programoni skenarin që të ekzekutohet një herë në javë. Mund ta ekzekutoni manualisht ashtu siç dëshironi.
  4. Përdorni keyword_suggestions.csv për analiza të mëtejshme:
    • parë_ parë: kjo është data kur pyetja u shfaq për herë të parë në autosuggest
    • i fundit_shikuar: data kur pyetja është parë për herë të fundit
    • eshte_i ri: nëse first_seen == last_seen ne e vendosim këtë në I vërtetë - Thjesht filtroni këtë vlerë për të marrë kërkimet e reja në trend në autosuggest Google.

Këtu është Kodi 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

Shkarkoni Skriptin Python

Çfarë mendoni ju?

Kjo faqe përdor Akismet për të reduktuar spamin. Mësoni se si përpunohet komenti juaj.