如何使用Python批量获取百度搜索结果并分析关键词排名?

小婷同学_9508

小婷同学_9508

2026-06-18

863人浏览

原创

不能直接用python批量获取百度真实搜索排名,因百度封禁自动化爬取且结果高度动态;requests+beautifulsoup无法获取真实排名,因pc端结果由js渲染,移动端需校验ua/cookie等;替代方案为百度官方api或第三方seo工具api。

如何使用python批量获取百度搜索结果并分析关键词排名?

不能直接用 Python 批量获取百度真实搜索结果页的关键词排名——百度明确封禁自动化爬取,且返回结果高度动态(IP、登录态、设备、历史行为均影响排序),所谓“排名”本身在未登录、无点击、无停留的请求中毫无业务意义。

为什么 requests + BeautifulSoup 拿不到真实排名?

百度 PC 端搜索结果页的主体内容(尤其是自然结果)由 JavaScript 动态渲染,requests 获取到的 HTML 里只有占位 div 和骨架结构,关键链接和标题藏在 JSON 数据或后续 XHR 请求中;移动端(m.baidu.com)虽有部分 SSR,但会校验 User-Agent、Cookie、Referer,甚至要求执行前端验证逻辑(如 bd__cbs__xxx 回调)。

常见错误现象包括:

  • 返回 302 跳转到验证码页(https://www.baidu.com/verify/index?)
  • 返回空列表或仅广告位(id="content_left" 下无 class="result")
  • 拿到的链接是跳转中间页(https://www.baidu.com/link?url=...),非真实目标 URL

如果只是做竞品词监测,该用什么替代方案?

真正可用的路径只有两条:一是走百度官方 API(需企业资质+付费),二是用第三方 SEO 工具的开放接口(如 Ahrefs、SE Ranking、5118 的 API),它们通过分布式真实浏览器集群模拟搜索,再聚合统计排名数据。

若必须本地轻量实现(仅限测试/学习),可考虑:

摸鱼日报和百度热搜等图片生成,持续升级中
摸鱼日报和百度热搜等图片生成,持续升级中

通过极简的 JSON 输入生成“摸鱼日报”或“百度热搜”风格海报,默认输出 SVG 格式,支持可选的 PNG / JPG / WEBP 导出格式。

下载
  • 用 selenium 启动带用户配置的 Chrome(加载 user-data-dir,复用登录态),但需处理滑块验证、频率限流、页面懒加载(scrollIntoView 触发)
  • 改用百度站长平台提供的 site: 查询接口(https://zhanzhang.baidu.com/api/search?site=example.com&word=keyword),但它只返回该站点在百度索引中的总结果数,不提供排序位置
  • 放弃“百度排名”,转向 Google(googlesearch-python 库可稳定获取前 100 条,但需注意 google.com 的反爬策略升级频繁)

如何解析百度 SERP 中的真实目标 URL?

即使绕过反爬拿到页面 HTML,a 标签的 href 属性也不是最终地址。百度对所有自然结果链接做了跳转封装,真实 URL 存储在 data-url 属性或 onmousedown 事件字符串里(如 onmousedown="return c({'fm':'search','tab':'result','title':'xxx','url':'https://example.com'})")。

安全提取方式为:

  • 优先读取 data-url 属性(现代百度 PC 端已普遍支持)
  • fallback 到正则提取 onmousedown 中的 url:'(https?://[^']+)'
  • 绝对不要直接访问 https://www.baidu.com/link?url=... 并依赖重定向——百度可能返回 403 或插入二次跳转

示例片段:

from bs4 import BeautifulSoup
import re

html = "<a data-url="https://real.example.com" onmousedown='\"return' c>"
soup = BeautifulSoup(html, 'html.parser')
a = soup.find('a')
real_url = a.get('data-url') or re.search(r"url:'(https?://[^']+)'", a.get('onmousedown', '')).group(1)
</a>

真正的难点不在代码怎么写,而在于你拿到的“第3名”在另一台机器、另一个时间、另一个账号下大概率变成第7名或根本不出现在首页——百度排名本质是个性化快照,不是数据库里的一条固定记录。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1651

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

4064

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1649

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

23497

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2887

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2907

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1143

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2263

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程