使用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$/月,當(dāng)然如果覺得價格合適也可以進行購買,畢竟這些工具的很多功能都很實用。今天我給大家分享的這個排名搜索工具基于python實現(xiàn),當(dāng)然肯定是不需要花費任何費用,裝上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ù)的目標(biāo)是獲取指定關(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)在鏈接中,就返回當(dāng)前的排名(從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)文章
Python實現(xiàn)播放gif動圖文件工具(增強版)
這篇文章主要為大家詳細(xì)介紹了如何使用Python實現(xiàn)一個播放gif動圖文件的增強版工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-10-10
基于Python實現(xiàn)簡易的植物識別小系統(tǒng)
這篇文章主要介紹了利用Python實現(xiàn)一個簡易的植物識別系統(tǒng),文中的示例代碼簡潔易懂,對我們學(xué)習(xí)Python有一定的幫助,需要的小伙伴可以參考一下2021-12-12
Python中__new__和__init__的區(qū)別與聯(lián)系
這篇文章主要介紹了Python中__new__和__init__的區(qū)別與聯(lián)系,需要的朋友可以參考下2021-05-05
Python利用PyMobileDevice3控制iOS設(shè)備的完整教程
PyMobileDevice3是一個純Python 3實現(xiàn)的iOS設(shè)備控制工具庫,為開發(fā)者和技術(shù)愛好者提供了強大的iOS設(shè)備管理能力,所以本文給大家介紹了Python利用PyMobileDevice3控制iOS設(shè)備的完整教程,需要的朋友可以參考下2025-12-12

