使用python实现关键字排名追踪——跟踪你的网站在过去12个月搜索引擎排名和关键字表现
要实现一个简单的Python工具来跟踪你的网站在过去12个月的搜索引擎排名和关键词表现,我们可以使用以下技术栈:
- Google Search Console API:可以获取到Google搜索的数据,包括关键词排名、点击量、展示量等。需要事先配置Google Cloud并获取API凭证。
- BeautifulSoup 和 Requests:用于抓取搜索引擎页面的排名数据。如果你不想使用Google Search Console API,可以模拟手动抓取搜索引擎结果。
下面,我将分别介绍如何实现这两个方案,并展示一个Python实现的例子。
方案一:使用 Google Search Console API
-
安装必要的库
首先,你需要安装Google API客户端库:
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
-
创建 Google Cloud 项目并启用 Search Console API
- 访问 Google Cloud Console,创建一个新的项目。
- 启用 Google Search Console API。
- 获取 OAuth 2.0凭证,并下载 credentials.json 文件。
-
Python代码实现
以下是通过Google Search Console API 获取网站过去12个月关键词排名的代码示例:
import os import json from google.oauth2 import service_account from googleapiclient.discovery import build import datetime# 读取Google Search Console API的凭证 SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly'] KEY_FILE_LOCATION = 'path_to_your_credentials.json' PROPERTY_URL = 'https://www.example.com' # 替换成你的网站URL# 设置日期范围(过去12个月) today = datetime.date.today() twelve_months_ago = today - datetime.timedelta(days=365)# 认证并创建服务对象 credentials = service_account.Credentials.from_service_account_file(KEY_FILE_LOCATION, scopes=SCOPES) service = build('searchconsole', 'v1', credentials=credentials)# 获取搜索分析数据 def get_search_analytics_data():request = service.searchanalytics().query(siteUrl=PROPERTY_URL,body={'startDate': str(twelve_months_ago),'endDate': str(today),'dimensions': ['query'],'rowLimit': 1000 # 获取前1000个关键词})response = request.execute()# 输出结果if 'rows' in response:for row in response['rows']:keyword = row['keys'][0]clicks = row['clicks']impressions = row['impressions']ctr = row['ctr']position = row['position']print(f"关键词: {keyword}, 点击量: {clicks}, 展示量: {impressions}, CTR: {ctr:.2f}, 排名: {position:.2f}")else:print("没有找到数据")if __name__ == '__main__':get_search_analytics_data()
说明:
startDate
和endDate
设定了过去12个月的时间范围。dimensions
为query
,表示我们希望获取关键词相关的搜索数据。rowLimit
用于限制返回的关键词数量,最多可以返回1000个。
-
运行代码
运行代码时,它会输出网站在过去12个月的关键词表现,包括点击量、展示量、CTR(点击率)和排名。
方案二:使用 BeautifulSoup 模拟抓取搜索引擎
如果你不想使用 Google Search Console API,可以使用 BeautifulSoup
来抓取搜索引擎的结果来获取关键词排名。这个方法不太推荐用于大规模的抓取,因为搜索引擎可能会限制或封锁爬虫的请求。
-
安装必要的库
pip install beautifulsoup4 requests
-
Python代码实现
下面是使用
BeautifulSoup
模拟抓取 Google 搜索结果并提取关键词排名的代码:import requests from bs4 import BeautifulSoup import urllib.parse# Google 搜索URL模板 def google_search_url(query):query = urllib.parse.quote(query)return f"https://www.google.com/search?q={query}"# 获取排名信息 def get_keyword_rank(keyword):url = google_search_url(keyword)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}response = requests.get(url, headers=headers)if response.status_code != 200:print("请求失败!")return Nonesoup = BeautifulSoup(response.text, 'html.parser')# 解析搜索结果result_divs = soup.find_all('div', {'class': 'g'})rankings = []for index, div in enumerate(result_divs):title = div.find('h3')if title:rank = index + 1link = div.find('a')['href']rankings.append((rank, title.text, link))return rankings# 获取关键词的排名 def track_keywords(keywords):for keyword in keywords:print(f"查询关键词: {keyword}")rankings = get_keyword_rank(keyword)if rankings:for rank, title, link in rankings:print(f"排名: {rank}, 标题: {title}, 链接: {link}")print("-" * 40)if __name__ == '__main__':keywords = ['python教程', 'SEO优化教程', '数据分析工具'] # 输入你想跟踪的关键词track_keywords(keywords)
-
运行代码
运行时,它会通过抓取 Google 搜索的前几页结果来跟踪给定的关键词的排名。每个关键词的排名和相关链接会被输出。
总结
- 方案一:使用 Google Search Console API 是更官方和高效的方法,可以直接获取你网站的排名和表现数据,推荐给专业的SEO团队使用。
- 方案二:使用 BeautifulSoup 模拟抓取搜索引擎结果,虽然简单易用,但容易受到反爬虫机制的限制,适合小范围使用。
无论是哪种方案,跟踪关键词的排名和表现都有助于你了解网站的SEO效果,并且能够帮助你做出优化决策。