Python: Skrip Ekstrak Trend Autosuggest Google untuk Kata kunci Carian Niche Anda

Skrip Python Untuk Menangkap Aliran Autosuggest

Semua orang menyukai Google Trends, tetapi agak rumit mengenai Kata Kunci Long Tail. Kita semua suka rasmi perkhidmatan tren google kerana mendapat pandangan mengenai tingkah laku carian. Walau bagaimanapun, dua perkara menghalang banyak pengguna menggunakannya untuk kerja padu;

  1. Apabila anda perlu mencari kata kunci khusus baru, di sana data tidak mencukupi di Google Trends 
  2. Kekurangan API rasmi untuk membuat permintaan ke tren google: Ketika kita menggunakan modul seperti pytrends, maka kita mesti menggunakan pelayan proksi, atau kita disekat. 

Dalam artikel ini, saya akan berkongsi Skrip Python yang kami tulis untuk mengeksport kata kunci arah aliran melalui Google Autosuggest.

Ambil dan Simpan Hasil Autosuggest Seiring Masa 

Katakan kita mempunyai 1,000 kata kunci Benih untuk dihantar ke Autosuggest Google. Sebagai balasannya, kita mungkin akan mendapat sekitar 200,000 longtail kata kunci. Kemudian, kita perlu melakukan perkara yang sama seminggu kemudian dan membandingkan set data ini untuk menjawab dua soalan:

  • Pertanyaan mana kata kunci baru berbanding kali terakhir? Ini mungkin kes yang kita perlukan. Google berpendapat bahawa pertanyaan tersebut menjadi lebih penting - dengan berbuat demikian, kami dapat membuat penyelesaian Google Autosuggest sendiri! 
  • Pertanyaan mana kata kunci tidak lagi tren?

Skripnya agak mudah, dan kebanyakan kod yang saya kongsi di sini. Kod yang dikemas kini menyimpan data dari masa lalu dan membandingkan cadangan dari masa ke masa. Kami mengelakkan pangkalan data berasaskan fail seperti SQLite untuk menjadikannya mudah - jadi semua penyimpanan data menggunakan fail CSV di bawah. Ini membolehkan anda mengimport fail dalam Excel dan meneroka trend kata kunci khusus untuk perniagaan anda.

Untuk Menggunakan Skrip Python Ini

  1. Masukkan kumpulan kata kunci pilihan anda yang harus dihantar ke pelengkap automatik: keywords.csv
  2. Sesuaikan tetapan Skrip untuk keperluan anda:
    • BAHASA: lalai “en”
    • NEGARA: lalai "kami"
  3. Jadualkan skrip untuk dijalankan seminggu sekali. Anda juga boleh menjalankannya secara manual seperti yang anda mahukan.
  4. Gunakan keyword_suggestions.csv untuk analisis lebih lanjut:
    • pertama_lihat: ini adalah tarikh di mana pertanyaan muncul buat pertama kalinya dalam autosuggest
    • kali terakhir dilihat: tarikh di mana pertanyaan dilihat untuk kali terakhir
    • is_new: jika first_seen == last_seen kita menetapkannya kepada Benar - Cukup saring nilai ini untuk mendapatkan carian tren baru di autosuggest Google.

Inilah Kod 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

Muat turun Skrip Python

Apa yang anda fikir?

Laman web ini menggunakan Akismet untuk mengurangkan spam. Ketahui bagaimana data komen anda diproses.