Python爬取百度指数保姆级教程超详细抓包手把手零报错代码小白照抄即跑数据一键导出Excel哈喽各位小伙伴 写论文找数据、做新媒体选题、分析市场热度百度指数绝对是刚需神器 但官网只能看不能导出手动抄数据又慢又容易出错真的太折磨人了这篇纯干货教程全程图标步骤拆解细节标注连抓包点哪个按钮都标得明明白白零基础也能轻松上手再也不用对着网页干瞪眼啦 本文速览✅ 适用人群全覆盖论文党/新媒体/运营/编程小白✅ 保姆级抓包教程一步一图思路零门槛操作✅ 完整可运行代码直接复制替换参数即可用✅ 常见报错全解决告别运行失败一键排雷✅ 数据可视化进阶自动生成热度趋势图✅ 合规使用提醒安全爬取不踩坑 前期准备3分钟搞定动手前先把基础配置好后续操作丝滑不卡顿电脑安装Python3.7及以上版本注册并登录百度账号必须登录才能获取数据浏览器Chrome/Edge均可本文以Edge演示代码编辑器VS Code/PyCharm/记事本都能用【核心必看】超详细抓包步骤一步不落抓包是整个爬虫的关键每一步都配好指引图标跟着点绝对不会错Step1 打开百度指数并登录浏览器输入官网https://index.baidu.com点击页面右上角登录按钮完成百度账号登录⚠️ 重要提示未登录无法抓取数据接口这一步千万不能省Step2 开启浏览器开发者工具键盘直接按下快捷键F12笔记本按FnF12 右侧会弹出开发者工具面板右键 检查一样的效果这就是抓包核心工具Step3 切换至「网络/Network」面板在开发者工具顶部菜单栏找到并点击 ️ 中文网络英文NetworkStep4 勾选「保留日志」重中之重❗在Network面板左上角找到小方框选项 ✅ 勾选保留日志Preserve log不勾选的话页面刷新后请求会消失永远找不到目标接口Step5 筛选数据接口过滤无效内容在Network面板上方的筛选栏中点击 ️Fetch/XHR只保留数据接口请求屏蔽图片、脚本等无关内容找接口更轻松Step6 清空历史请求记录点击Network面板左上角的清除按钮圆圈斜杠图标把面板内杂乱的请求全部清空方便后续观察新请求Step7 搜索目标关键词触发数据加载回到百度指数页面在搜索框输入关键词例爬虫点击右侧查询按钮等待页面加载出热度折线图加载完成后开发者工具会出现新的请求列表Step8 精准定位百度指数数据接口不用挨个翻找直接用搜索框快速定位在Network面板的搜索框输入SearchApi按下回车列表会仅保留1条请求请求名称格式index?area0word...这就是爬取指数的核心接口直接点击它Step9 切换至「标头/Headers」选项卡点击目标请求后在右侧详情页选择 ️ 中文标头英文HeadersStep10 复制两大核心参数完整复制不修改在「请求标头Request Headers」区域找到并复制Cipher-Text复制冒号后所有加密字符串Cookie复制冒号后一长串完整登录凭证⚠️ 温馨提示两个参数均有有效期失效后重新抓包即可 完整可运行爬虫代码替换抓包获取的参数一键运行自动导出Excel数据# -*- coding:utf-8 -*- import datetime import requests import json import pandas as pd import time # 【替换成你抓包到的参数】 HEADERS { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0, Host: index.baidu.com, Referer: https://index.baidu.com/v2/main/index.html, Accept: application/json, text/plain, */*, Accept-Encoding: gzip, deflate, br, zstd, Accept-Language: zh-CN,zh;q0.9,en;q0.8, Sec-Ch-Ua: \Chromium\;v\146\, \Not-A.Brand\;v\24\, \Microsoft Edge\;v\146\, Sec-Ch-Ua-Mobile: ?0, Sec-Ch-Ua-Platform: \Windows\, Sec-Fetch-Dest: empty, Sec-Fetch-Mode: cors, Sec-Fetch-Site: same-origin, # 替换成你抓包到的 Cipher-Text Cipher-Text: 你的Cipher-Text } COOKIES { # 替换成你抓包到的 Cookie Cookie: 你的完整Cookie } # def get_html(url): 发送请求防风控延时1秒 time.sleep(1) try: response requests.get(url, headersHEADERS, cookiesCOOKIES, timeout15) response.raise_for_status() return response.text except Exception as e: print(f请求失败{str(e)}) return def decrypt(ptbk, encrypted_data): 百度指数官方解密算法还原真实指数 ifnot ptbk ornot encrypted_data: return n list(ptbk) i list(encrypted_data) mapping {} half_len len(n) // 2 for j, k in zip(n[half_len:], n[:half_len]): mapping[k] j return.join([mapping.get(char, ) for char in i]) def get_ptbk(uniqid): 获取解密密钥ptbk url fhttps://index.baidu.com/Interface/ptbk?uniqid{uniqid} resp_text get_html(url) if resp_text: return json.loads(resp_text)[data] return def crawl_baidu_index(keyword, days30): 通用百度指数爬取函数可自定义关键词和时间范围 # 构造请求URL url ( fhttps://index.baidu.com/api/SearchApi/index?area0word f[[%7B%22name%22:%22{keyword}%22,%22wordType%22:1%7D]]days{days} ) # 1. 获取加密数据 resp_text get_html(url) ifnot resp_text: print(❌ 未获取到数据请检查Cookie/Cipher-Text是否正确) return # 2. 解析数据 data json.loads(resp_text) if data.get(status) ! 0: print(f⚠️ 接口返回异常{data.get(message)}) return uniqid data[data][uniqid] all_encrypted data[data][userIndexes][0][all][data] pc_encrypted data[data][userIndexes][0][pc][data] wise_encrypted data[data][userIndexes][0][wise][data] # 3. 解密 ptbk get_ptbk(uniqid) all_index decrypt(ptbk, all_encrypted).split(,) pc_index decrypt(ptbk, pc_encrypted).split(,) wise_index decrypt(ptbk, wise_encrypted).split(,) # 4. 生成日期序列 end_date datetime.date.today() start_date end_date - datetime.timedelta(daysdays-1) date_list [(start_date datetime.timedelta(daysi)).strftime(%Y-%m-%d) for i in range(days)] # 5. 保存Excel result_df pd.DataFrame({ 日期: date_list, 整体指数(PC移动): all_index, PC端指数: pc_index, 移动端指数: wise_index }) print(f✅ 【{keyword}】近{days}天百度指数爬取完成) print(result_df) result_df.to_excel(f{keyword}_百度指数_近{days}天.xlsx, indexFalse) print(f\n 文件已保存{keyword}_百度指数_近{days}天.xlsx) return result_df if __name__ __main__: # 自定义爬取关键词和时间范围 crawl_baidu_index(keyword花粉过敏, days30) 环境配置运行教程1. 安装依赖库打开终端/CMD执行命令pip install requests pandas openpyxl 加速安装国内镜像pip install requests pandas openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple关于镜像源设置一劳永逸的方法可以看这~~~2. 运行代码将代码保存为baidu_index.py终端执行python baidu_index.py运行成功后文件夹内自动生成Excel数据文件⚠️ 常见报错一键解决全是高频问题1. ❌ 报错No module named openpyxl原因导出Excel缺少依赖库解决执行pip install openpyxl即可2. ❌ 接口返回异常/无数据原因Cipher-Text/Cookie过期或填写错误解决重新抓包复制最新参数替换3. ❌ 抓包找不到SearchApi接口原因未登录、未勾选保留日志、筛选错误解决重新登录→勾选保留日志→筛选Fetch/XHR→重新查询关键词4. ❌ IP被限制/请求失败原因请求频率过高触发反爬解决代码已加延时避免高频批量爬取即可 进阶玩法自动生成热度趋势图爬完数据直接出图论文/报告直接用在代码末尾添加以下代码import matplotlib.pyplot as plt # 解决中文乱码 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 生成趋势图 df crawl_baidu_index(花粉过敏, 30) plt.figure(figsize(12,5)) plt.plot(df[日期], df[整体指数], markero, color#1E88E5, label整体搜索指数) plt.xticks(rotation45) plt.title(「花粉过敏」近30天百度指数趋势图, fontsize14) plt.legend() plt.tight_layout() plt.savefig(指数趋势图.png, dpi300) plt.show() 重要合规提醒必看 本教程仅限个人学习、论文研究使用严禁商用、恶意批量爬取 严格遵守百度指数用户协议避免高频请求导致账号/IP封禁 抓包参数为个人登录凭证切勿随意泄露给他人 文末互动觉得这篇保姆级教程有用的话别忘了点赞在看转发让更多小伙伴告别手动抄数据