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

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

[复制链接]
我来看看 发表于 2023-03-04 00:06:13 | 显示全部楼层 |阅读模式
* S, V' ]$ g: l3 J6 M

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

+ b) H7 N) I; {7 ?% `8 j5 |

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

( r0 {1 l1 f: e ~

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

$ F- _+ M; g8 L$ x

:# logger.info(f开始爬取{url})try:0 O o K5 C; h1 p" m! ? headers = Headers(headers=True).generate() / t$ d8 L( o" I0 Z response = requests.get(url,headers=headers)' b8 T6 y" Q( k1 v. F

1 q8 ^8 I* o; o! i

if response.status_code == requests.codes.ok:) x. ~6 m/ [& x* l # logger.info(f抓取成功{url})% E" t# R7 T3 \ response.encoding =

6 F# j. J$ V3 A- S; s$ G

utf-8return response.text1 i1 F! }% X3 d" F7 X7 o6 Z except: 0 J; x7 m5 ?& _# r4 k% p7 Z8 d logger.error(f抓取失败,请重新抓取) $ w1 D7 `. j9 B* T2 q) O' |$ `: i returnNone利用pyquery进行页面解析,获取指定网站地址或品牌名称的位置。

" C# a& Q$ y* P* \7 P0 L s

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

2 A5 H7 X5 R! ^% R

parse_html(html,page,name,keyword):; ^. O' Q k( a$ Z doc = pq(html) $ @1 ]. P. {. w3 \ items = doc(#content_left) 5 _% F& ?$ y8 i8 T+ } rank_list = items.children(

) M1 V+ n& f f' ^

.result)7 Q j- k' {% g9 t+ Y if name notin str(rank_list): & i! G0 }/ M1 m" b) Y returnNonefor index,info in enumerate(rank_list.items()):( A! F8 M ?* F) l( m! o% ] webname =

* f/ l0 D* U5 x! E" e# h

lambda x :name.replace(.,\.) if.in name else name3 \8 n" P& q4 \ z. z if info(rfa:contains({webname(name)})):/ R! B! f+ q8 u# w+ M ranking = index + page) Y0 U/ N: E9 S" |

5 d9 L% I% k1 h0 W# y7 U

if ranking == 0: 7 k" I' O( d# P ranking += 1 . X9 x( R. k: v! P$ }+ `* F- `! i5 Q logger.info(f{keyword}--排名在第{page//10 + 1}页,第

- T2 f' ^. v% k; M+ l7 G8 J# P

{ranking}名)2 A* ~3 i% G7 X! K5 {+ G returnTrue在关键词文本中,我们导入所需要查询的关键词,举个例子,留学行业的关键词defread_keyword():with open(rkeywords.txt

0 O8 L! C% f# a: t/ t; i; y

,r,encoding=utf-8) as f:1 q$ k; i2 B% f L2 ?8 G/ z keywords = f.read().splitlines() ) Z6 r" R+ U/ ^7 P: T% \ return keywords

m' R1 b" I% j, {9 x2 U

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

" J: e2 A: o6 G% e1 P

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

. V. _4 C; r5 T1 A+ a

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

8 B8 a9 G( a$ G( f! `0 o1 G

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

: l, r% e$ r2 v$ U: B2 Q

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

! U+ T- u- Q# t, U9 u$ W

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

4 I; U" X) ^+ q5 P# j2 \ 0 b* K8 N" }1 v- `. o# L1 a& r + n( F! m; W( k% M# ]! j4 k / M0 j7 ?0 f8 w3 e" d) ~' `7 F8 r+ P8 {! }( e

暂时无法加载帖子列表

回复

使用道具 举报

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

使用道具 举报

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

    本版积分规则

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

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

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

    Powered by Discuz! X3.5

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