ពស់ថ្លាន់៖ ស្គ្រីបការដកស្រង់នៃការរក្សាសិទ្ធិភាព Google សម្រាប់ពាក្យគន្លឹះស្វែងរកពិសេសរបស់អ្នក

ស្គ្រីបពស់ថ្លាន់ដើម្បីចាប់យកនិន្នាការស្វ័យប្រវត្តិ

មនុស្សគ្រប់គ្នាចូលចិត្ត Google Trends ប៉ុន្តែវាមានល្បិចបន្តិចនៅពេលនិយាយអំពីពាក្យគន្លឹះឡុង។ យើងទាំងអស់គ្នាចូលចិត្តមន្ត្រី សេវាកម្មនិន្នាការហ្គូហ្គល សម្រាប់ការទទួលបានការយល់ដឹងអំពីឥរិយាបទស្វែងរក។ ទោះជាយ៉ាងណាក៏ដោយរឿងពីររារាំងមនុស្សជាច្រើនពីការប្រើប្រាស់វាសម្រាប់ការងាររឹងមាំ។

  1. នៅពេលអ្នកត្រូវការរក ពាក្យគន្លឹះពិសេសថ្មីវាមាន មិនមានទិន្នន័យគ្រប់គ្រាន់អំពី Google Trends 
  2. កង្វះនៃ API ផ្លូវការសម្រាប់ការស្នើសុំទៅនិន្នាការហ្គូហ្គល: នៅពេលយើងប្រើម៉ូឌុលដូច pytrendsបន្ទាប់មកយើងត្រូវប្រើម៉ាស៊ីនមេប្រូកស៊ីឬយើងត្រូវបានរារាំង។ 

នៅក្នុងអត្ថបទនេះខ្ញុំនឹងចែករំលែកស្គ្រីប Python ដែលយើងបានសរសេរដើម្បីនាំចេញពាក្យគន្លឹះដែលមាននិន្នាការតាមរយៈ Google Autosuggest ។

ទៅយកនិងរក្សាទុកលទ្ធផលស្វ័យប្រវត្តិតាមពេលវេលា 

ឧបមាថាយើងមានពាក្យគន្លឹះចំនួន ១០០០ គ្រាប់ត្រូវបានផ្ញើទៅ Google Autosuggest ។ ជាថ្នូរយើងនឹងទទួលបានប្រហែល ២០ ម៉ឺន កន្ទុយ​វែង ពាក្យគន្លឹះ។ បន្ទាប់មកយើងត្រូវធ្វើដូចគ្នានៅសប្តាហ៍ក្រោយហើយប្រៀបធៀបសំណុំទិន្នន័យទាំងនេះដើម្បីឆ្លើយសំណួរពីរ៖

  • សំណួរមួយណា ពាក្យគន្លឹះថ្មី បើប្រៀបធៀបទៅនឹងពេលវេលាចុងក្រោយ? នេះប្រហែលជាករណីដែលយើងត្រូវការ។ ហ្គូហ្គោលគិតថាសំណួរទាំងនោះកាន់តែមានសារៈសំខាន់ - ដោយធ្វើដូច្នេះយើងអាចបង្កើតដំណោះស្រាយហ្គូហ្គលអូតូហ្គូសស្ទឺរដោយខ្លួនឯង! 
  • សំណួរមួយណា ពាក្យគន្លឹះមិនមានទៀតទេ និន្នាការ?

ស្គ្រីបគឺងាយស្រួលណាស់ហើយភាគច្រើននៃកូដដែលខ្ញុំបានចែករំលែក នៅ​ទីនេះ។ លេខកូដដែលបានធ្វើបច្ចុប្បន្នភាពរក្សាទុកទិន្នន័យពីការរត់ពីមុននិងប្រៀបធៀបការស្នើសុំតាមពេលវេលា។ យើងចៀសវាងមូលដ្ឋានទិន្នន័យដែលមានមូលដ្ឋានលើឯកសារដូចជា SQLite ដើម្បីធ្វើឱ្យវាមានលក្ខណៈសាមញ្ញដូច្នេះការផ្ទុកទិន្នន័យទាំងអស់កំពុងប្រើឯកសារ CSV ខាងក្រោម។ នេះអនុញ្ញាតឱ្យអ្នកនាំចូលឯកសារនៅក្នុង Excel និងស្វែងរកនិន្នាការពាក្យគន្លឹះពិសេសសម្រាប់អាជីវកម្មរបស់អ្នក។

ដើម្បីប្រើប្រាស់ស្គ្រីបពស់ថ្លាន់នេះ

  1. បញ្ចូលសំណុំពាក្យគន្លឹះគ្រាប់ពូជរបស់អ្នកដែលគួរតែត្រូវបានផ្ញើទៅបំពេញស្វ័យប្រវត្តិ: keywords.csv
  2. កែតម្រូវការកំណត់ស្គ្រីបសម្រាប់តំរូវការរបស់អ្នក៖
    • ភាសា៖ លំនាំដើម“ en”
    • ប្រទេស: លំនាំដើម“ ពួកយើង”
  3. កំណត់ពេលវេលាស្គ្រីបដើម្បីដំណើរការម្តងក្នុងមួយសប្តាហ៍។ អ្នកក៏អាចដំណើរការវាដោយដៃដូចដែលអ្នកចង់បាន។
  4. ប្រើ keyword_suggestions.csv សម្រាប់ការវិភាគបន្ថែម៖
    • first_seen៖ នេះជាកាលបរិច្ឆេទដែលសំណួរបានលេចចេញជាលើកដំបូងនៅក្នុងលេខអូតូ
    • ចុងក្រោយ៖ កាលបរិច្ឆេទដែលសំណួរត្រូវបានគេមើលឃើញជាលើកចុងក្រោយ
    • គឺថ្មី៖ ប្រសិនបើ first_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

ទាញយកស្គ្រីបស្គ្រីប

តើ​អ្នក​គិត​អ្វី?

តំបន់បណ្ដាញនេះប្រើ Akismet ដើម្បីកាត់បន្ថយសារឥតបានការ។ សិក្សាអំពីរបៀបដែលទិន្នន័យរបស់អ្នកត្រូវបានដំណើរការ.