پٿون: اسڪرپٽ گوگل جي هڪ خودڪار تجويز وارو رجحان توهان جي نيچ ڳولا جي ڳولا وارن لفظن لاءِ

خودڪشي جي رجحانات کي پڪڙڻ لاءِ پٿون اسڪرپٽ

گوگل ٽرينڊز کي پسند ڪندڙ هر ڪنهن کي پسند آهي ، جڏهن اهو ڊگهو دم جي ڪيٻيچ سان اچي ٿو ته اها ٿورڙي چال آهي. اسان سڀني کي سرڪاري پسند آهي گوگل رجحانات جي سهولت ڳولا جي رويي تي بصيرت حاصل ڪرڻ لاءِ. تنهن هوندي ، ٻه شيون ڪيترن کي استعمال ڪندا آهن ان کي سولو ڪم لاءِ استعمال ڪرڻ ؛

  1. جڏهن توهان کي ڳولڻ جي ضرورت آهي نئين جڳهن جا لفظ، نه گوگل رجحانات تي ڊيٽا ڪافي نه آهي 
  2. گوگل رجحانات کي گهرائڻ لاءِ رسمي API جو فقدان: جڏهن اسان ماڊيول استعمال ڪندا آهيون پيرولينپوءِ اسان کي پراکسي سرور استعمال ڪرڻا پوندا ، يا اسان کي بلاڪ ڪيو ويندو آهي. 

انهي آرٽيڪل ۾ ، مان هڪ پيٿن اسڪرپٽ کي حصيداري ڪندس جنهن کي اسان گوگل آٽوسگجسٽ جي ذريعي رجحان ساز لفظن واري ايڪسپورٽ ڪرڻ لاءِ لکيو آهي.

وقت تي خودڪار نتيجا آڻيو ۽ ذخيرو ڪريو 

فرض ڪيو ته اسان وٽ 1,000،200,000 ٻٽ مطلوب لفظ آهن Google Autosuggest ڏانهن موڪليا ويا. موٽ ۾ ، اسان شايد XNUMX،XNUMX جي لڳ ڀڳ حاصل ڪنداسين ڊگھائي لفظ ان کان پوء ، اسان کي هڪ هفتي بعد ساڳيو ڪم ڪرڻ ۽ انهن سوالن جو مقابلو ڪرڻ گهرجي ته ٻن سوالن جا جواب ڏين.

  • ڪهڙا سوال آهن نوان لفظ گذريل وقت جي مقابلي ۾؟ هي شايد اهو معاملو آهي جنهن جي اسان کي ضرورت آهي. گوگل سمجهندو آهي ته اهي سوالون وڌيڪ اهم ٿي رهيون آهن - ائين ڪرڻ سان ، اسان پنهنجو گوگل گوگل خود حل تيار ڪري سگهون ٿا! 
  • ڪهڙا سوال آهن هاڻ لفظ نه آهن رجحان ڏانهن؟

رسم الخط ڪافي آسان آھي ، ۽ تمام گهڻو ڪوڊ جيڪو مون شيئر ڪيو آھي هتي. اپڊيٽ ڪيل ڪوڊ گذريل ھلندڙن کان ڊيٽا بچائيندو آھي ۽ وقت سان گڏ تجويزون جو مقابلو ڪندو. اسان فائلن تي ٻڌل ڊيٽابيس کان بچڻ کان پاسو ڪيون ٿا جهڙوڪ SQLite انهي کي آسان بنائڻ لاءِ - انهي ڪري س storageو ڊيٽا اسٽوريج هيٺ CSV فائلون استعمال ڪري رهيو آهي. اهو توهان کي هڪسل ۾ فائل درآمد ڪرڻ ۽ توهان جي ڪاروبار لاءِ نوان ڳجها فيچر ڳولڻ جي قابل بنائي ٿو.

هن پٿرن جي لکت کي استعمال ۾ آڻڻ لاءِ

  1. پنھنجي بيج جو لفظ سيٽ داخل ڪريو جيڪو پاڻ کي مڪمل ڪيو وڃي موڪليو وڃي: keywords.csv
  2. پنھنجي ضرورت لاءِ اسڪرپٽ سيٽنگن کي ترتيب ڏيو.
    • ٻولي: ڊفالٽ “en”
    • ملڪ: ڊفالٽ “اسان”
  3. شيڊول کي هفتي ۾ هڪ ڀيرو هلائڻ جو شيڊول ڪيو وڃي. توهان اهو دستي طور تي پڻ هلائي سگهو ٿا جئين توهان چاهيو ٿا.
  4. وڌيڪ تجزيو لاءِ Key_suggestions.csv استعمال ڪريو.
    • پهريون_سن: هي تاريخ آهي جتي پهريون ڀيرو آٽوسوسوجسٽ ۾ سوال ظاهر ٿيا
    • آخري ڀيرو ڏٺو ويو: تاريخ جتي آخري وقت تائين سوال ڏٺو ويو
    • نئون آهيجيڪڏهن پهريون_سين == آخري_سن اسان هن کي سيٽ ڪيو سچ پچ ته - صرف انهي قيمت تي فلٽر ڪريو گوگل کي جديد تجويزون حاصل ڪرڻ لاءِ.

هتي پٿن ڪوڊ آهي

# 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

پٿن جو اسڪرپٽ ڊائونلوڊ ڪريو

توهان ڇا ٿا سوچيو؟

هي سائيٽ اسپام کي گهٽائڻ لاء اکزمٽ استعمال ڪري ٿو. سکو ته توهان جي تجويز ڪيل ڊيٽا کي ڪيئن عمل ڪيو وڃي.