使用Python制作一個批量查詢搜索排名工具
搭建背景
最近工作中需要用上 Google SEO(搜索引擎優(yōu)化),有了解過的朋友們應該都知道SEO必不可少的工作之一就是查詢關鍵詞的搜索排名。關鍵詞少的時候可以一個一個去查沒什么問題,但是到了后期,一個網(wǎng)站都有幾百上千的關鍵詞,你再去一個一個查,至少要花費數(shù)小時的時間。
雖然市面上有很多SEO免費或者收費工具,但免費的基本都不能批量查,我看到網(wǎng)上最多也就只能10個10個查詢,而且查詢速度很慢。收費的工具如Ahrefs、SEMrush等以月為單位收費最低也都要 99$/月,當然如果覺得價格合適也可以進行購買,畢竟這些工具的很多功能都很實用。今天我給大家分享的這個排名搜索工具基于python實現(xiàn),當然肯定是不需要花費任何費用,裝上python開發(fā)環(huán)境即可。
實現(xiàn)步驟
話不多說,上代碼:
import requests from bs4 import BeautifulSoup
首先我們導入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(關鍵詞)和website(網(wǎng)站域名)。函數(shù)的目標是獲取指定關鍵詞在谷歌搜索結果中的排名。
在函數(shù)內部,首先構建了一個URL,該URL使用指定的關鍵詞進行谷歌搜索。然后設置了一個User-Agent頭部,模擬一個瀏覽器的請求。使用requests.get方法發(fā)送HTTP請求,獲取搜索結果頁面的響應。response.raise_for_status()用于檢查請求是否成功,如果返回的狀態(tài)碼不是200,會拋出一個異常。
接下來,使用BeautifulSoup庫解析響應的HTML內容,創(chuàng)建一個BeautifulSoup對象,并使用html.parser解析器進行解析。然后通過find_all方法查找所有具有'class'屬性為'g'的'div'元素,這些元素包含了搜索結果的信息。
接著使用enumerate函數(shù)遍歷搜索結果列表,并使用result.find('a')['href']獲取每個搜索結果中的鏈接。如果指定的網(wǎng)站域名出現(xiàn)在鏈接中,就返回當前的排名(從1開始計數(shù))。
如果循環(huán)結束后未找到指定的網(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}")
最后是一個示例用法的代碼。定義了一個包含多個關鍵詞的列表keywords和一個指定的網(wǎng)站域名website。
通過for循環(huán)遍歷關鍵詞列表,調用get_google_rank函數(shù)獲取每個關鍵詞在谷歌搜索結果中的排名。如果返回的排名不為None,則根據(jù)排名的值進行條件判斷,如果排名為-1,打印關鍵詞沒有排名的消息,否則打印關鍵詞的排名信息。
以上就是整段代碼的含義和邏輯。該代碼實現(xiàn)了獲取指定關鍵詞在谷歌搜索結果中的排名,并通過示例展示了如何使用這個函數(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}")
梯子有點問題,先放個必應上查詢的截圖吧。
到此這篇關于使用Python制作一個批量查詢搜索排名工具的文章就介紹到這了,更多相關Python查詢搜索排名工具內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
pytorch?tensor按廣播賦值scatter_函數(shù)的用法
這篇文章主要介紹了pytorch?tensor按廣播賦值scatter_函數(shù)的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06