东尧:python开发SEO工具:批量查询关键词【百度PC排名】工具

  • A+
所属分类:SEO培训课程

做SEO的朋友都会遇到需要查询关键词排名的时候,如果有大量的关键词需要查询排名,还用手动一个个去搜索,一页页去检查在哪页,效率将会非常的慢。这里东尧用python开发了一个批量查询关键词百度PC排名的工具,简单快速就能获得所有排名结果。

 

一、工具效果

检测结果:关键词+排名+排名url。结果文件采用追加模式,可以记录每次查询的时间和相应排名结果,方便对比。

多个排名结果只取第一个(也就是同一关键词只取排名最好的结果),如需要获取一个关键词的全部排名,可以联系东尧免费给你修改代码。

python批量查询关键词排名工具

 

二、使用方法

运行环境:pycharm

关键词列表:在“关键词.txt”文件内按行写入需要查询的关键词,编码为utf-8(建议使用notepad++编辑)

指定网址:代码第66行处替换需要查询的网址

查询页数:代码第56行的第二个参数可设置想查询的页数(前二页11,前三页21,前四页31,以此类推)

结果保存:工具运行完成后会生成“排名结果.txt”的文件,采用追加的方式保存(也就是说历史查询结果的基础上追加新内容)

批量查询关键词排名

 

三、代码实现

这里只分享部分代码,全部的完整代码可关注东尧公众号(陈东尧)回复“批量查排名工具”即可获得。

  1. def createKey():   #create baidu URL with search words
  2.     with open('关键词.txt') as f:
  3.         for key in f:
  4.             key_word.append(key)
  5. if __name__ == '__main__':
  6.     createKey()
  7.     with open('排名结果.txt', 'a', encoding='utf-8') as f:
  8.         f.write('***********'+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+'***********'+'\n')
  9.     for k in key_word:
  10.         t = 0
  11.         key_url = parse.quote(k.strip())
  12.         for p in range(0,41,10): # 第二个参数设置页数(前二页11,前三页21,前四页31,以此类推。)
  13.             url = 'https://www.baidu.com/s?wd=%s&pn=%d&rn=10' % (key_url,p)
  14.             html = download(url, user_agent=ua)
  15.             a = re.findall(r'<div class="result c-container "(.*?)class="m">百度快照</a>', html, re.S | re.I)
  16.             for i in a:
  17.                 b = re.search(r'data-tools=.*?{"title":".*?","url":"(.*?)"}.*?><a class="c-tip-icon">', i,
  18.                               re.I | re.S).group(1)
  19.                 c = re.search(r'id="(.*?)".*?tpl="se.*?"', i, re.S | re.I).group(1)
  20.                 r = requests.head(b).headers['Location']
  21.                 with open('排名结果.txt', 'a', encoding='utf-8') as f:
  22.                     if 'seopeixun.com' in r: #这里指定需要检测的网址
  23.                         line = k.strip() + '####第%s名:' % c + r + '\n'
  24.                         f.write(line)
  25.                         f.flush()
  26.                         t = 1
  27.                         break
  28.                     else:
  29.                         continue
  30.             if t == 1:
  31.                 break
  32.             else:
  33.                 continue
  34.         if t==0:
  35.             with open('排名结果.txt', 'a', encoding='utf-8') as f:
  36.                 line = k.strip() + '####排名>50'+ '\n'
  37.                 f.write(line)
  38.                 f.flush()
  39.     print('完成!')

源码下载

东尧已经将本文涉及到的源代码放在了百度网盘中:

立即下载源代码:https://pan.baidu.com/s/1mZanOqrlJS8oJL7gQLKtYg

获取网盘密码方法:关注我的公众号(陈东尧)回复关键词“批量查排名工具”即可获得下载密码。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: