Python: Script Google Autosuggest Extract of Trends for Your Niche Search Keywords

Python-komentosarja automaattisten ehdotusten trendien kaappaamiseen

Kaikki pitävät Google Trendsistä, mutta se on vähän hankalaa, kun on kyse pitkistä hännän avainsanoista. Me kaikki pidämme virkamiehestä google trendipalvelu saadaksesi oivalluksia hakukäyttäytymisestä. Kaksi asiaa kuitenkin estää monia käyttämästä sitä hyvässä työssä;

  1. Kun sinun täytyy löytää uudet kapealla avainsanat, siellä ei ole tarpeeksi tietoja Google Trendsissä 
  2. Virallisen API: n puuttuminen Google-trendejä koskevien pyyntöjen esittämiseksi: Kun käytämme moduuleja, kuten pytrendit, sitten meidän on käytettävä välityspalvelimia, tai muuten estetään. 

Tässä artikkelissa jaan python-komentosarjan, jonka olemme kirjoittaneet trendien avainsanojen viemiseksi Google Autosuggestin kautta.

Hae ja tallenna automaattisen haun tulokset ajan myötä 

Oletetaan, että meillä on 1,000 200,000 Seed-avainsanaa lähetettäväksi Google Autosuggestiin. Vastineeksi saamme todennäköisesti noin XNUMX XNUMX longtail avainsanat. Sitten meidän on tehtävä sama viikkoa myöhemmin ja vertailtava näitä aineistoja vastaamaan kahteen kysymykseen:

  • Mitkä kyselyt ovat uudet avainsanat verrattuna edelliseen kertaan? Tätä luultavasti tarvitsemme. Google uskoo, että kyselyt ovat yhä tärkeämpiä - tekemällä näin voimme luoda oman Google Autosuggest -ratkaisun! 
  • Mitkä kyselyt ovat avainsanat eivät enää ole trendikäs?

Komentosarja on melko helppo, ja suurin osa jaetusta koodista tätä. Päivitetty koodi tallentaa tiedot aiemmista ajoista ja vertailee ehdotuksia ajan myötä. Vältimme tiedostopohjaisia ​​tietokantoja, kuten SQLite, jotta se olisi yksinkertaista - joten kaikki tallennustilat käyttävät alla olevia CSV-tiedostoja. Tämän avulla voit tuoda tiedoston Exceliin ja tutkia yritykseesi sopivia avainsanatrendejä.

Tämän Python-komentosarjan hyödyntäminen

  1. Kirjoita siemenavainsarjasi, joka lähetetään automaattiseen täydennykseen: keywords.csv
  2. Säädä komentosarjan asetuksia tarpeidesi mukaan:
    • KIELI: oletus "en"
    • MAA: oletus "me"
  3. Aikata skripti suoritetaan kerran viikossa. Voit käyttää sitä myös manuaalisesti haluamallasi tavalla.
  4. Käytä keyword_suggestions.csv: tä tarkempaan analyysiin:
    • ensin_ nähnyt: tämä on päivämäärä, jolloin kysely ilmestyi ensimmäisen kerran automaattisessa ehdotuksessa
    • viimeksi nähty: päivämäärä, jolloin kysely nähtiin viimeksi
    • on uusi: if first_seen == last_seen asetimme tämän arvoksi Totta - Suodata vain tämä arvo saadaksesi uudet trendihaut Googlen automaattiseen ehdotukseen.

Tässä on Python-koodi

# 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

Lataa Python-komentosarja

Mitä mieltä olet?

Tämä sivusto käyttää Akismetiä roskapostin vähentämiseksi. Lue, miten kommenttitietosi käsitellään.