找回密码
 加入怎通
查看: 184|回复: 1

python简单做一个seo关键词排名查询工具(python快速排名seo)

[复制链接]
我来看看 发表于 2023-03-04 00:06:13 | 显示全部楼层 |阅读模式
3 `- y8 M- Z/ o9 ^$ {

网上seo排名查询工具很多,基本上都是挺好用的,比如爱站软件包,斗牛软件等,都可以很方便的查询关键词的排名本次主要分享用python制作一个简易的排名查询工具,相对seo软件来说打开更加方便只需程序一键运行就可以,不需要繁琐的打开软件,导入等等繁琐步骤。

, v% p& ]# o+ i+ f1 c0 R& `6 I

下面直接上源码:获取百度查询地址https://www.baidu.com/s?wd=关键词&pn=页数,只需要这个地址,和两个参数就可以获取到百度响应的页面源码:BASE_URL = https://www.baidu.com/s?{}

; d" e3 H9 Q* y. [' ~2 {0 n

@retry(stop_max_attempt_number=3,retry_on_result=lambda x: x is None,wait_fixed=2000)defscrape_html(url)

8 v7 A0 ?6 P$ w! N* F s n

:# logger.info(f开始爬取{url})try:" T: b ^9 o8 A# a headers = Headers(headers=True).generate() * H# L2 z, \( z# w" I response = requests.get(url,headers=headers)1 M. j# B& j/ v7 Q. C1 h8 X' a

+ c$ e' @3 W1 @' Y8 Q8 U# w+ w# Y

if response.status_code == requests.codes.ok:4 v! j! o6 p* U0 M # logger.info(f抓取成功{url})/ i: d$ S+ L |6 P' [. R response.encoding =

3 B, K* N, q: s& v

utf-8return response.text; s" a; V. e& s5 z except:2 W3 J, g2 \# ]9 z logger.error(f抓取失败,请重新抓取) 5 o' x# G5 M/ z3 q% q returnNone利用pyquery进行页面解析,获取指定网站地址或品牌名称的位置。

) p+ B) y1 i: Z5 K

如果网站地址和品牌名称不在页面源码中,就直接返回None,不需要在继续下面循环如果包含地址和名称,执行下列循环,判断包含此名称和地址所在的索引号,通过索引号就可以算出排名了有排名后,就直接返回Truedef

5 a+ L+ f# n& X8 E Q9 q

parse_html(html,page,name,keyword): ' n: e+ P: Z( a doc = pq(html) ; @5 k Z4 J- @; Z) q. C2 D4 W items = doc(#content_left) . H! P5 f3 y$ i' A5 Q4 o% s rank_list = items.children(

0 R) \2 Y2 w# g% o2 D; A

.result) 7 `; ?8 {! \ w& ~$ F if name notin str(rank_list): 5 I/ w5 j1 v; N8 q1 t3 r returnNonefor index,info in enumerate(rank_list.items()):; K* k, \8 i3 K7 S) I webname =

$ T: M9 ^/ \2 @9 s# l6 l

lambda x :name.replace(.,\.) if.in name else name 5 j, a; `, C+ G4 a, N0 a( k if info(rfa:contains({webname(name)})): ; h8 u+ j0 N$ P, R$ j) w$ b7 j& j ranking = index + page }" e; K& e) f0 k0 H& |

+ p. _8 `& o, ~" _# B |5 W

if ranking == 0:& u* ^* j& D9 f$ [# `6 {" Q ranking += 1 # Q- C" o2 c& ^$ m logger.info(f{keyword}--排名在第{page//10 + 1}页,第

) {' `9 k Y* M& \6 ]

{ranking}名) . r m. ]9 f L/ q0 f returnTrue在关键词文本中,我们导入所需要查询的关键词,举个例子,留学行业的关键词defread_keyword():with open(rkeywords.txt

9 n8 V/ K$ S2 u$ z9 F+ V! F

,r,encoding=utf-8) as f: ' z, w+ T# C6 ]( y keywords = f.read().splitlines()+ m# S$ r& c0 }* S/ @& U% q8 e return keywords

3 r1 R1 T, ^: o8 c8 R" H$ A k

紧接着,输入要查询的网站地址或品牌名称,我们通过python自带的多线程threading包进行查询,提高查询效率;webname = input(请输入网址名称或品牌名称)ifwebname == q:

; @1 I; P& l6 e

exit() # main(keyword,webname)keywords = read_keyword()task_join = []forkeyword in keywords:task_start

: q; t- d2 c2 z- i

= threading.Thread(target=main,args=(keyword,webname))task_start.start()task_join.append(task_start)

7 ^8 L9 D5 g4 N. S r' |

forj in task_join:j.join()最后我们将程序导包成exe,打开cmd进入exe所在的路径执行这个程序,执行效果如下:

( H7 B* K% n% _% p! s

通过程序运行,就可以很轻松的查询到关键词在百度上的排名信息注:由于多线程查询速度快,关键词量不可查询过多,否则百度会有反屏蔽措施,这里我就没用代理ip去操作了整体上小范围的查询关键词排名,效果还是不错的。

* q: P% T0 S* v9 k# ?' C

最后想要获取打包的关键词查询工具exe,可以关注并私信我,我将把程序打包发给大家!

6 J( {6 Z5 m2 o( ~4 r% x 6 T" G- f2 b) o. U ?1 W/ K. I8 F$ H0 d5 ?3 U3 [9 d6 q9 o% y1 j # F4 q3 A. N, ] : F' j; \# t8 ?8 a& Y! I

暂时无法加载帖子列表

回复

使用道具 举报

xingongzuo123 发表于 2026-10-17 14:21:11 | 显示全部楼层
分析得很透彻,很多细节都说到点子上了~
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-11-1 00:30 , Processed in 0.055681 second(s), 25 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表