使用Python制作一個批量查詢搜索排名工具
搭建背景
最近工作中需要用上 Google SEO(搜索引擎優(yōu)化),有了解過的朋友們應(yīng)該都知道SEO必不可少的工作之一就是查詢關(guān)鍵詞的搜索排名。關(guān)鍵詞少的時候可以一個一個去查沒什么問題,但是到了后期,一個網(wǎng)站都有幾百上千的關(guān)鍵詞,你再去一個一個查,至少要花費數(shù)小時的時間。
雖然市面上有很多SEO免費或者收費工具,但免費的基本都不能批量查,我看到網(wǎng)上最多也就只能10個10個查詢,而且查詢速度很慢。收費的工具如Ahrefs、SEMrush等以月為單位收費最低也都要 99$/月,當然如果覺得價格合適也可以進行購買,畢竟這些工具的很多功能都很實用。今天我給大家分享的這個排名搜索工具基于python實現(xiàn),當然肯定是不需要花費任何費用,裝上python開發(fā)環(huán)境即可。
實現(xiàn)步驟
話不多說,上代碼:
import requests from bs4 import BeautifulSoup
首先我們導(dǎo)入requests和BeautifulSoup兩個庫,requests用于發(fā)送HTTP請求,BeautifulSoup用于解析HTML。
def get_google_rank(keyword, website):
try:
url = f"https://www.google.com/search?q={keyword}"
headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36'}
response = requests.get(url, headers=headers)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
search_results = soup.find_all('div', class_='g')
for i, result in enumerate(search_results):
link = result.find('a')['href']
if website in link:
return i + 1 # 返回排名(從1開始)
return -1 # 如果未找到網(wǎng)站,返回-1
except requests.exceptions.RequestException as e:
print(f"An error occurred: {e}")
return None
上述代碼定義了一個名為get_google_rank的函數(shù),該函數(shù)接受兩個參數(shù):keyword(關(guān)鍵詞)和website(網(wǎng)站域名)。函數(shù)的目標是獲取指定關(guān)鍵詞在谷歌搜索結(jié)果中的排名。
在函數(shù)內(nèi)部,首先構(gòu)建了一個URL,該URL使用指定的關(guān)鍵詞進行谷歌搜索。然后設(shè)置了一個User-Agent頭部,模擬一個瀏覽器的請求。使用requests.get方法發(fā)送HTTP請求,獲取搜索結(jié)果頁面的響應(yīng)。response.raise_for_status()用于檢查請求是否成功,如果返回的狀態(tài)碼不是200,會拋出一個異常。
接下來,使用BeautifulSoup庫解析響應(yīng)的HTML內(nèi)容,創(chuàng)建一個BeautifulSoup對象,并使用html.parser解析器進行解析。然后通過find_all方法查找所有具有'class'屬性為'g'的'div'元素,這些元素包含了搜索結(jié)果的信息。
接著使用enumerate函數(shù)遍歷搜索結(jié)果列表,并使用result.find('a')['href']獲取每個搜索結(jié)果中的鏈接。如果指定的網(wǎng)站域名出現(xiàn)在鏈接中,就返回當前的排名(從1開始計數(shù))。
如果循環(huán)結(jié)束后未找到指定的網(wǎng)站域名,函數(shù)返回-1,表示未找到網(wǎng)站。
如果在請求過程中發(fā)生異常,會捕獲requests.exceptions.RequestException異常,并打印錯誤消息,然后返回None。
# 示例用法
keywords = ['摸魚小游戲','是男人就下100層','游戲']
website = 'haiyong.site'
for keyword in keywords:
rank = get_google_rank(keyword, website)
if rank is not None:
if rank == -1:
print(f"{keyword}沒有排名")
else:
print(f"{keyword}排名第{rank}")最后是一個示例用法的代碼。定義了一個包含多個關(guān)鍵詞的列表keywords和一個指定的網(wǎng)站域名website。
通過for循環(huán)遍歷關(guān)鍵詞列表,調(diào)用get_google_rank函數(shù)獲取每個關(guān)鍵詞在谷歌搜索結(jié)果中的排名。如果返回的排名不為None,則根據(jù)排名的值進行條件判斷,如果排名為-1,打印關(guān)鍵詞沒有排名的消息,否則打印關(guān)鍵詞的排名信息。
以上就是整段代碼的含義和邏輯。該代碼實現(xiàn)了獲取指定關(guān)鍵詞在谷歌搜索結(jié)果中的排名,并通過示例展示了如何使用這個函數(shù)。
完整代碼
import requests
from bs4 import BeautifulSoup
def get_google_rank(keyword, website):
try:
url = f"https://www.google.com.hk/search?q={keyword}"
headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36'}
response = requests.get(url, headers=headers)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
search_results = soup.find_all('div', class_='g')
for i, result in enumerate(search_results):
link = result.find('a')['href']
if website in link:
return i + 1 # 返回排名(從1開始)
return -1 # 如果未找到網(wǎng)站,返回-1
except requests.exceptions.RequestException as e:
print(f"An error occurred: {e}")
return None
# 示例用法
keywords = ['摸魚小游戲','是男人就下100層','游戲']
website = 'haiyong.site'
for keyword in keywords:
rank = get_google_rank(keyword, website)
if rank is not None:
if rank == -1:
print(f"{keyword}沒有排名")
else:
print(f"{keyword}排名第{rank}")
梯子有點問題,先放個必應(yīng)上查詢的截圖吧。


到此這篇關(guān)于使用Python制作一個批量查詢搜索排名工具的文章就介紹到這了,更多相關(guān)Python查詢搜索排名工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
30秒學(xué)會30個超實用Python代碼片段【收藏版】
許多人在數(shù)據(jù)科學(xué)、機器學(xué)習(xí)、web開發(fā)、腳本編寫和自動化等領(lǐng)域中都會使用Python,它是一種十分流行的語言。本文將簡要介紹30個簡短的、且能在30秒內(nèi)掌握的代碼片段,感興趣的朋友一起看看吧2019-10-10
pytorch?tensor按廣播賦值scatter_函數(shù)的用法
這篇文章主要介紹了pytorch?tensor按廣播賦值scatter_函數(shù)的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06

