Python: Script Ekstrak Google Autosuggest dari Tren untuk Kata Kunci Pencarian Niche

Python Script Untuk Menangkap Tren Saran Otomatis

Semua orang menyukai Google Trends, tetapi agak rumit dalam hal Kata Kunci Long Tail. Kami semua menyukai pejabat itu layanan tren google untuk mendapatkan wawasan tentang perilaku penelusuran. Namun, dua hal mencegah banyak orang menggunakannya untuk pekerjaan yang solid;

  1. Saat Anda perlu mencari kata kunci niche baru, ada tidak cukup data di Google Trends 
  2. Kurangnya API resmi untuk membuat permintaan ke tren google: Saat kami menggunakan modul seperti pytrends, lalu kami harus menggunakan server proxy, atau kami diblokir. 

Pada artikel ini, saya akan membagikan Python Script yang telah kami tulis untuk mengekspor kata kunci yang sedang tren melalui Google Autosuggest.

Ambil dan Simpan Hasil Saran Otomatis dari Waktu ke Waktu 

Misalkan kita memiliki 1,000 kata kunci Seed untuk dikirim ke Google Autosuggest. Sebagai imbalannya, kami mungkin akan mendapatkan sekitar 200,000 ekor panjang kata kunci. Kemudian, kita perlu melakukan hal yang sama satu minggu kemudian dan membandingkan kumpulan data ini untuk menjawab dua pertanyaan:

  • Kueri yang mana kata kunci baru dibandingkan dengan yang terakhir kali? Ini mungkin kasus yang kita butuhkan. Menurut Google, kueri tersebut menjadi lebih signifikan - dengan melakukannya, kami dapat membuat solusi Saran Otomatis Google kami sendiri! 
  • Kueri yang mana kata kunci tidak lagi sedang tren?

Scriptnya cukup mudah, dan sebagian besar kodenya saya bagikan detail. Kode yang diperbarui menyimpan data dari proses sebelumnya dan membandingkan saran dari waktu ke waktu. Kami menghindari database berbasis file seperti SQLite untuk membuatnya sederhana - jadi semua penyimpanan data menggunakan file CSV di bawah ini. Ini memungkinkan Anda untuk mengimpor file di Excel dan menjelajahi tren kata kunci khusus untuk bisnis Anda.

Untuk Memanfaatkan Script Python ini

  1. Masukkan kumpulan kata kunci benih Anda yang harus dikirim ke pelengkapan otomatis: keywords.csv
  2. Sesuaikan pengaturan Script untuk kebutuhan Anda:
    • LANGUAGE: default “en”
    • COUNTRY: default "kami"
  3. Jadwalkan skrip untuk dijalankan seminggu sekali. Anda juga dapat menjalankannya secara manual sesuai keinginan.
  4. Gunakan saran_kunci.csv untuk analisis lebih lanjut:
    • pertama kali melihat: ini adalah tanggal ketika kueri muncul pertama kali di sugesti otomatis
    • terakhir terlihat: tanggal kueri dilihat untuk terakhir kali
    • baru: jika first_seen == last_seen kita setel ini ke Benar - Cukup filter nilai ini untuk mendapatkan penelusuran trending baru di Google autosuggest.

Berikut Kode 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

Unduh Python Script

Bagaimana menurut Anda?

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.