Python: Özel Arama Anahtar Kelimeleriniz için Google Autosuggest Eğilim Özeti Komut Dosyası

Otomatik Önerme Trendlerini Yakalamak İçin Python Komut Dosyası

Herkes Google Trends'i sever, ancak Uzun Kuyruk Anahtar Kelimeleri söz konusu olduğunda biraz yanıltıcıdır. Hepimiz resmi severiz google trendler hizmeti arama davranışı hakkında bilgi almak için. Bununla birlikte, iki şey birçok kişinin onu sağlam işler için kullanmasını engelliyor;

  1. Bulman gereken zaman yeni niş anahtar kelimeler, Orada Google Trendler hakkında yeterli veri yok 
  2. Google trendlerine talepte bulunmak için resmi API eksikliği: Pytrends, o zaman proxy sunucuları kullanmalıyız yoksa engelleniriz. 

Bu makalede, trend olan anahtar kelimeleri Google Autosuggest aracılığıyla dışa aktarmak için yazdığımız bir Python Komut Dosyasını paylaşacağım.

Zaman İçinde Otomatik Önerme Sonuçları Alın ve Depolayın 

Google Autosuggest'e gönderilecek 1,000 Temel anahtar kelimemiz olduğunu varsayalım. Karşılığında, muhtemelen yaklaşık 200,000 alacağız uzun kuyruk anahtar kelimeler. Ardından, aynı şeyi bir hafta sonra yapmalı ve iki soruyu yanıtlamak için bu veri kümelerini karşılaştırmalıyız:

  • Hangi sorgular yeni anahtar kelimeler geçen seferle karşılaştırıldığında? Muhtemelen ihtiyacımız olan durum budur. Google, bu sorguların daha önemli hale geldiğini düşünüyor - bunu yaparak kendi Google Autosuggest çözümümüzü oluşturabiliriz! 
  • Hangi sorgular anahtar kelimeler artık değil trend mi?

Komut dosyası oldukça kolay ve paylaştığım kodun çoğu okuyun. Güncellenen kod, geçmiş çalıştırmalardaki verileri kaydeder ve zaman içinde önerileri karşılaştırır. Basitleştirmek için SQLite gibi dosya tabanlı veritabanlarından kaçındık - bu nedenle tüm veri depolaması aşağıdaki CSV dosyalarını kullanıyor. Bu, dosyayı Excel'e aktarmanıza ve işletmeniz için niş anahtar kelime eğilimlerini keşfetmenize olanak tanır.

Bu Python Komut Dosyasını Kullanmak İçin

  1. Otomatik tamamlamaya gönderilmesi gereken çekirdek anahtar kelime kümenizi girin: keywords.csv
  2. Komut dosyası ayarlarını ihtiyacınıza göre ayarlayın:
    • DİL: varsayılan "en"
    • ÜLKE: varsayılan "biz"
  3. Komut dosyasını haftada bir çalışacak şekilde planlayın. Dilediğiniz gibi manuel olarak da çalıştırabilirsiniz.
  4. Daha fazla analiz için keyword_suggestions.csv kullanın:
    • ilk görüş: bu, sorgunun otomatik öneride ilk kez göründüğü tarihtir
    • son görülen: sorgunun son kez görüldüğü tarih
    • yeni: eğer first_seen == last_seen bunu şu şekilde ayarlarız Gerçek - Google otomatik önerisinde yeni trend aramaları almak için bu değeri filtrelemeniz yeterlidir.

İşte Python Kodu

# 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

Python Komut Dosyasını İndirin

Ne düşünüyorsunuz?

Bu site spam'i azaltmak için Akismet'i kullanıyor. Yorum verilerinizin nasıl işlendiğini öğrenin.