Python: Tập lệnh Trích xuất xu hướng tự động đề xuất của Google cho các từ khóa tìm kiếm thích hợp của bạn

Tập lệnh Python để nắm bắt các xu hướng tự động đề xuất

Mọi người đều thích Google Xu hướng, nhưng hơi phức tạp khi nói đến Từ khóa Đuôi dài. Tất cả chúng ta đều thích quan chức dịch vụ xu hướng google để có được thông tin chi tiết về hành vi tìm kiếm. Tuy nhiên, có hai điều ngăn cản nhiều người sử dụng nó cho công việc vững chắc;

  1. Khi bạn cần tìm từ khóa thích hợp mới, ở đó không đủ dữ liệu trên Google Xu hướng 
  2. Thiếu API chính thức để đưa ra yêu cầu đối với xu hướng của google: Khi chúng tôi sử dụng các mô-đun như pytrends, sau đó chúng tôi phải sử dụng máy chủ proxy, nếu không chúng tôi sẽ bị chặn. 

Trong bài viết này, tôi sẽ chia sẻ một Tập lệnh Python mà chúng tôi đã viết để xuất các từ khóa thịnh hành qua Google Autosuggest.

Tìm nạp và lưu trữ kết quả tự động đề xuất theo thời gian 

Giả sử chúng ta có 1,000 từ khóa Seed được gửi đến Google Autosuggest. Đổi lại, chúng tôi có thể nhận được khoảng 200,000 đuôi dài từ khóa. Sau đó, chúng tôi cần làm tương tự một tuần sau và so sánh các tập dữ liệu này để trả lời hai câu hỏi:

  • Truy vấn nào là từ khóa mới so với lần trước? Đây có lẽ là trường hợp chúng ta cần. Google cho rằng những truy vấn đó đang trở nên quan trọng hơn - bằng cách làm như vậy, chúng tôi có thể tạo ra giải pháp Google Autosuggest của riêng mình! 
  • Truy vấn nào là từ khóa không còn xu hướng?

Tập lệnh khá dễ dàng và hầu hết các mã tôi đã chia sẻ nhấn vào đây.. Mã được cập nhật lưu dữ liệu từ các lần chạy trước đây và so sánh các đề xuất theo thời gian. Chúng tôi đã tránh cơ sở dữ liệu dựa trên tệp như SQLite để làm cho nó trở nên đơn giản - vì vậy tất cả việc lưu trữ dữ liệu đang sử dụng tệp CSV bên dưới. Điều này cho phép bạn nhập tệp trong Excel và khám phá các xu hướng từ khóa thích hợp cho doanh nghiệp của bạn.

Sử dụng tập lệnh Python này

  1. Nhập bộ từ khóa gốc của bạn sẽ được gửi đến tự động hoàn thành: keywords.csv
  2. Điều chỉnh cài đặt Tập lệnh theo nhu cầu của bạn:
    • LANGUAGE: default “en”
    • COUNTRY: mặc định là “chúng tôi”
  3. Lên lịch chạy tập lệnh mỗi tuần một lần. Bạn cũng có thể chạy nó theo cách thủ công như bạn muốn.
  4. Sử dụng keyword_suggestions.csv để phân tích thêm:
    • lần đầu tiên nhìn thấy: đây là ngày mà truy vấn xuất hiện lần đầu tiên trong tự động đề xuất
    • nhìn thấy lần cuối: ngày mà truy vấn được nhìn thấy lần cuối cùng
    • là mới: if first_seen == last_seen, chúng tôi đặt điều này thành Thật - Chỉ cần lọc giá trị này để nhận các tìm kiếm thịnh hành mới trong đề xuất tự động của Google.

Đây là mã 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

Tải xuống tập lệnh Python

Bạn nghĩ gì?

Trang web này sử dụng Akismet để giảm spam. Tìm hiểu cách xử lý dữ liệu nhận xét của bạn.