Python: Google-ийн скрипт нь таны хайлтын түлхүүр үгсэд чиглэсэн хандлагын хандлагыг автоматаар санал болгодог

Автоматаар санал болгох чиг хандлагыг олж авахын тулд Python скрипт

Google Trends-т хүн бүхэн дуртай байдаг, гэхдээ Long Tail түлхүүр үгсийн талаар ярихад жаахан төвөгтэй байдаг. Бид бүгд албан тушаалтанд дуртай google trend үйлчилгээ хайлтын зан үйлийн талаархи ойлголтыг олж авах. Гэсэн хэдий ч хоёр зүйл нь олон хүн үүнийг хатуу ажилд ашиглахад саад болдог;

  1. Хайх хэрэгтэй үед шинэ түлхүүр үгс, Тэнд Google Trends дээрх мэдээлэл хангалтгүй байна 
  2. Google-ийн чиг хандлагад хүсэлт гаргахад зориулсан албан ёсны API дутагдалтай: Бид ийм модулиудыг ашиглах үед pytrends, дараа нь бид прокси сервер ашиглах ёстой, эсвэл бид хаагдах болно. 

Энэ нийтлэлд Google Autosuggest-ээр дамжуулан чиг хандлагын түлхүүр үгсийг экспортлох зорилгоор бидний бичсэн Python скриптийг хуваалцах болно.

Автоматаар санал болгосон үр дүнг цаг хугацаанд нь авч, хадгал 

Бидэнд Google Autosuggest руу илгээгдэх 1,000 үрийн түлхүүр үг байна гэж бодъё. Үүний хариуд бид 200,000 орчим авах байх урт сүүл түлхүүр үгс. Дараа нь бид нэг долоо хоногийн дараа ижил зүйлийг хийж, эдгээр мэдээллийн багцыг харьцуулж хоёр асуултанд хариулах хэрэгтэй.

  • Асуултууд аль нь вэ? шинэ түлхүүр үгс сүүлчийн удаа харьцуулахад? Энэ нь бидэнд хэрэгтэй тохиолдол байж магадгүй юм. Google эдгээр асуултууд илүү ач холбогдолтой болж байна гэж Google үзэж байна - ингэснээр бид өөрсдийн Google Autosuggest шийдлийг бий болгож чадна! 
  • Асуултууд аль нь вэ? түлхүүр үгс байхгүй болсон чиг хандлага?

Скрипт нь нэлээд хялбар бөгөөд ихэнх кодыг би хуваалцсан энд. Шинэчлэгдсэн код нь өнгөрсөн хугацааны өгөгдлийг хэмнэж, цаг хугацаа өнгөрөхөд гарсан саналуудыг харьцуулж үздэг. Үүнийг хялбаршуулахын тулд бид SQLite гэх мэт файлд суурилсан мэдээллийн сангаас зайлсхийсэн тул бүх өгөгдлийн сан доорх CSV файлуудыг ашиглаж байна. Энэ нь файлыг Excel дээр импортлох, бизнесийнхээ түлхүүр үгсийн чиг хандлагыг судлах боломжийг танд олгоно.

Энэ Python скриптийг ашиглахын тулд

  1. Автоматаар бөглөхдөө илгээсэн үрийн түлхүүр үгээ оруулна уу: keywords.csv
  2. Скриптийн тохиргоог өөрийн хэрэгцээнд тохируулна уу.
    • ХЭЛ: анхдагч “en”
    • УЛС: анхдагч "бид"
  3. Скриптийг долоо хоногт нэг удаа ажиллуулах хуваарь гарга. Та мөн хүссэнээрээ гараар ажиллуулж болно.
  4. Цаашид дүн шинжилгээ хийхийн тулд keyword_suggestions.csv ашиглана уу:
    • эхний_харагдсан: энэ нь асуулга анх удаа autosuggest дээр гарч ирсэн огноо юм
    • хамгийн сүүлд харсан: асуулгыг хамгийн сүүлд үзсэн огноо
    • шинэ: if first_seen == last_seen бид үүнийг тохируулсан Үнэн - Google-ийн autosuggest дахь шинэ чиг хандлагыг олж авахын тулд энэ утгыг шүүнэ үү.

Энд 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

Python скриптийг татаж авах

Чи юу гэж бодож байна?

Энэ сайт нь спамыг багасгахын тулд Akismet-ийг ашигладаг. Таны өгөгдлийг хэрхэн боловсруулдаг талаар суралц.