seo关键词工具(直接上源码:获取百度查询地址排名查询工具)
优采云 发布时间: 2022-01-02 23:00seo关键词工具(直接上源码:获取百度查询地址排名查询工具)
网上seo排名查询工具很多,基本上都非常好用,比如爱站软件包,斗牛软件等等,可以很方便的查询关键词的排名。本次主要分享使用python制作一个简单的排名查询工具,打开起来比seo软件更方便。只需一键运行程序,无需打开软件、导入等繁琐步骤。源代码直接在下面:
获取百度查询地址关键词&pn=页码,只有这个地址和两个参数才能得到百度响应的页面源码:
BASE_URL = 'https://www.baidu.com/s?{}'
@retry(stop_max_attempt_number=3,retry_on_result=lambda x: x is None,wait_fixed=2000)
def scrape_html(url):
# logger.info(f'开始爬取{url}')
try:
headers = Headers(headers=True).generate()
response = requests.get(url,headers=headers)
if response.status_code == requests.codes.ok:
# logger.info(f'抓取成功{url}')
response.encoding = 'utf-8'
return response.text
except:
logger.error(f'抓取失败,请重新抓取')
return None
使用pyquery分析页面,获取指定网站地址或品牌名称的位置。如果网站的地址和品牌名称不在页面源码中,则直接返回None,无需继续下面的循环。如果收录地址和姓名,则执行以下循环,确定收录姓名和地址的索引号,通过索引号可以计算出排名。有排名后直接返回True
def parse_html(html,page,name,keyword):
doc = pq(html)
items = doc('#content_left')
rank_list = items.children('.result')
if name not in str(rank_list):
return None
for index,info in enumerate(rank_list.items()):
webname = lambda x :name.replace('.','\.') if '.' in name else name
if info(rf'a:contains({webname(name)})'):
ranking = index + page
if ranking == 0:
ranking += 1
logger.info(f'{keyword}--排名在第{page//10 + 1}页,第{ranking}名')
return True
在关键词的正文中,我们导入需要的查询关键词,例如留学行业的关键词
def read_keyword():
with open(r'keywords.txt','r',encoding='utf-8') as f:
keywords = f.read().splitlines()
return keywords
接下来输入要查询的网站地址或品牌名称,我们将通过python自带的多线程线程包进行查询,提高查询效率;
webname = input('请输入网址名称或品牌名称')
if webname == 'q':
exit()
# main(keyword,webname)
keywords = read_keyword()
task_join = []
for keyword in keywords:
task_start = threading.Thread(target=main,args=(keyword,webname))
task_start.start()
task_join.append(task_start)
for j in task_join:
j.join()
最后我们把程序导入一个exe,打开cmd,输入exe所在路径执行程序,执行效果如下:
通过运行程序,您可以轻松找到关键词在百度上的排名信息。注:由于多线程查询速度较快,关键词的查询量不能太多,否则百度会有防阻塞措施,这里我不使用代理ip来操作。总体来说,小范围查询关键词排名,效果还是不错的。
最后想要打包关键词查询工具exe的话可以关注我私信,我会把程序打包发给大家!