Python: skript Google'i automaatse pakkumise väljavõte teie nišiotsingu märksõnade trendidest

Automaatse pakkumise trendide püüdmiseks Pythoni skript

Google Trends meeldib kõigile, kuid pikkade sabade märksõnade osas on see natuke keeruline. Ametnik meeldib meile kõigile google trenditeenus otsingukäitumise kohta ülevaate saamiseks. Kuid kaks asja ei lase paljudel seda kindla töö jaoks kasutada;

  1. Kui peate leidma uued niši märksõnadei pole teenuses Google Trends piisavalt andmeid 
  2. Ametliku API puudumine Google'i trendide taotluste esitamiseks: kui kasutame mooduleid nagu pytrends, siis peame kasutama puhverservereid, muidu blokeerime. 

Selles artiklis jagan Pythoni skripti, mille oleme kirjutanud trendisõnade eksportimiseks Google Autosuggest'i kaudu.

Autosugesti tulemuste toomine ja salvestamine aja jooksul 

Oletame, et meil on Google Autosuggestile saata 1,000 Seedi märksõna. Vastutasuks saame tõenäoliselt umbes 200,000 XNUMX pikk saba märksõnad. Seejärel peame sama tegema nädala pärast ja võrdlema neid andmekogumeid, et vastata kahele küsimusele:

  • Millised päringud on uued märksõnad võrreldes eelmise korraga? See on ilmselt juhtum, mida me vajame. Google arvab, et need päringud muutuvad üha olulisemaks - seda tehes saame luua oma Google Autosuggesti lahenduse! 
  • Millised päringud on märksõnad enam mitte trendikas?

Skript on üsna lihtne ja enamus koodist, mida ma jagasin siin. Uuendatud kood salvestab varasemate jooksude andmed ja aja jooksul tehtud soovituste võrdlemise. Selle lihtsustamiseks vältisime failipõhiseid andmebaase nagu SQLite - nii et kogu andmete salvestamine kasutab allpool olevaid CSV-faile. See võimaldab teil faili Excelisse importida ja uurida oma ettevõtte jaoks nišši märksõnade suundumusi.

Selle Pythoni skripti kasutamiseks

  1. Sisestage oma algne märksõnakomplekt, mis tuleks saata automaatse täitmise juurde: keywords.csv
  2. Kohandage skripti seadeid vastavalt oma vajadustele:
    • LANGUAGE: vaikimisi “en”
    • RIIK: vaikimisi „meie”
  3. Ajastage skripti käitamine kord nädalas. Võite seda ka käsitsi käivitada, kui soovite.
  4. Edasiseks analüüsimiseks kasutage märksõna_suggestions.csv:
    • esimene_nähtud: see on kuupäev, kus päring ilmus esmakordselt automaatse pakkumise lehel
    • Viimati nähtud: kuupäev, kus päringut viimati nähti
    • on_ uus: kui first_seen == last_seen oleme selle seadistanud Tõsi - Filtreerige see väärtus lihtsalt, et saada Google'i automaatsesse soovitusse uued trendikad otsingud.

Siin on Pythoni kood

# 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

Laadige alla Pythoni skript

Mis sa arvad?

Sellel saidil kasutatakse rämpsposti vähendamiseks Akismetit. Vaadake, kuidas teie andmeid töödeldakse.