使用python制作一个批量查询搜索排名的SEO免费工具1.0版

搭建背景

最近工作中需要用上 Google SEO(搜索引擎优化),有了解过的朋友们应该都知道SEO必不可少的工作之一就是查询关键词的搜索排名。关键词少的时候可以一个一个去查没什么问题,但是到了后期,一个网站都有几百上千的关键词,你再去一个一个查,至少要花费数小时的时间。

虽然市面上有很多SEO免费或者收费工具,但免费的基本都不能批量查,我看到网上最多也就只能10个10个查询,而且查询速度很慢。收费的工具如Ahrefs、SEMrush等以月为单位收费最低也都要 99$/月,当然如果觉得价格合适也可以进行购买,毕竟这些工具的很多功能都很实用。今天我给大家分享的这个排名搜索工具基于python实现,当然肯定是不需要花费任何费用,装上python开发环境即可。

实现步骤

话不多说,上代码:

1
2
import requests
from bs4 import BeautifulSoup

首先我们导入requestsBeautifulSoup两个库,requests用于发送HTTP请求,BeautifulSoup用于解析HTML。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 # 如果未找到网站,返回-1

except requests.exceptions.RequestException as e:
print(f"An error occurred: {e}")
return None

上述代码定义了一个名为get_google_rank的函数,该函数接受两个参数:keyword(关键词)和website(网站域名)。函数的目标是获取指定关键词在谷歌搜索结果中的排名。

在函数内部,首先构建了一个URL,该URL使用指定的关键词进行谷歌搜索。然后设置了一个User-Agent头部,模拟一个浏览器的请求。使用requests.get方法发送HTTP请求,获取搜索结果页面的响应。response.raise_for_status()用于检查请求是否成功,如果返回的状态码不是200,会抛出一个异常。

接下来,使用BeautifulSoup库解析响应的HTML内容,创建一个BeautifulSoup对象,并使用html.parser解析器进行解析。然后通过find_all方法查找所有具有’class’属性为’g’的’div’元素,这些元素包含了搜索结果的信息。

接着使用enumerate函数遍历搜索结果列表,并使用result.find('a')['href']获取每个搜索结果中的链接。如果指定的网站域名出现在链接中,就返回当前的排名(从1开始计数)。

如果循环结束后未找到指定的网站域名,函数返回-1,表示未找到网站。

如果在请求过程中发生异常,会捕获requests.exceptions.RequestException异常,并打印错误消息,然后返回None

1
2
3
4
5
6
7
8
9
10
11
# 示例用法
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和一个指定的网站域名website

通过for循环遍历关键词列表,调用get_google_rank函数获取每个关键词在谷歌搜索结果中的排名。如果返回的排名不为None,则根据排名的值进行条件判断,如果排名为-1,打印关键词没有排名的消息,否则打印关键词的排名信息。

以上就是整段代码的含义和逻辑。该代码实现了获取指定关键词在谷歌搜索结果中的排名,并通过示例展示了如何使用这个函数。

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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 # 如果未找到网站,返回-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制作一个批量查询搜索排名的SEO免费工具1.0版
https://haiyong.site/post/3f6e4bd0.html
作者
海拥
发布于
2023-06-17
更新于
2023-06-17
许可协议
CC BY-NC-SA 4.0

空降评论 复制本文地址
休闲游戏 实用工具 昼夜切换 切换鼠标右键 切换全屏 打印页面

哆哆女性网一对一免费算命电影太行山上情侣qq头像一左一右永城财险给软件签名成语起名男生大全五行起名注意事项没起名能办出生证吗任姓男孩取名起名大全周公解梦梦见剪发周公解梦大全查询梦见拉屎企业建设网站平台在线取名起名大全生辰八字周易ppt下载女装店起名试用期转正工作总结推广营销花费周易推算结婚日期刟伟华周易培训云南网站建设优选平台关于动物的三年级作文周易预测股票的书周易八字运势城口网站制作西安seo教程女人有气质的网名根据生辰八字算命准吗广州seo关键字优化东莞关键词优化seo五行八字起名测评打分淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化