手动查百度指数太费劲?qdata 帮你把一周的活压到 5 分钟
发布时间:2026/8/17 20:23:56 作者:尧图编辑部 阅读量:1,286

手动查百度指数太费劲qdata 帮你把一周的活压到 5 分钟【免费下载链接】spider-BaiduIndexdata sdk for baidu Index项目地址: https://gitcode.com/gh_mirrors/sp/spider-BaiduIndex假设你是一名运营或市场同学周五下午老板丢来一句下周汇报要用把近一年『露营』『飞盘』『CityWalk』这几个词的百度搜索热度走势拉出来再按省份排个序。你打开 index.baidu.com输入一个词选好时间手动记录数据…… 三个词 × 12 个月 × 34 个省份你估算了一下下周五之前能做完就不错了。其实这件事有一个更省力的解法qdata一个专门针对百度指数封装的 Python 数据 SDK。你只要写十几行代码把关键词和时间段丢给它剩下的请求、加密参数、数据解密、按天展开它全部替你处理完几分钟就能拿到结构化数据直接喂给 Excel 或 pandas 做分析。本文就是一份面向零基础读者的上手指南带你从安装到跑出第一份数据全程不超 5 分钟。第一件事把 qdata 请进你的 Python 环境老规矩先装包。打开终端执行pip install qdata如果你的网络环境装不上或者想用仓库里最新的改动也可以把源码拉下来本地安装git clone https://gitcode.com/gh_mirrors/sp/spider-BaiduIndex cd spider-BaiduIndex python setup.py install 小贴士如果你机器上之前装过pycrypto建议先pip uninstall pycrypto再装 qdata否则两个加密库容易打架。装完后在 Python 里敲一行import qdata不报错就说明环境就绪了。唯一绕不开的准备一张有效的登录凭证这里要先说句实话百度指数并不对游客开放完整数据接口要求你处于登录状态。qdata 的解决方案很简单——把你浏览器里的 Cookie 借给它用。你可以把 Cookie 理解成一张游乐园门票浏览器登录后自动揣在兜里qdata 拿着这张票去替你要数据。取票步骤如下用 Chrome 或 Edge 打开百度并登录你的账号按 F12 打开开发者工具切到 Network网络面板随便刷新一个百度页面点开任意一条请求在 Request Headers 里找到Cookie:那一长串值右键 Copy 复制。拿到后把它存成一个变量后面的所有接口都要用到它cookies BAIDUIDxxxx; ... # 替换成你自己的⚠️ 避坑提醒Cookie 相当于你的登录身份等同于账号密码不要发到群里、贴进博客或者提交到 GitHub 仓库。另外它有过期时间哪天报登录失效的错重新取一次就好。第一份数据让 qdata 跑起来现在到了最有成就感的环节。我们以露营这个词为例拉取 2024 年全年的搜索指数from qdata.baidu_index import get_search_index cookies 你的Cookie for row in get_search_index( keywords_list[[露营]], start_date2024-01-01, end_date2024-12-31, cookiescookies, ): print(row)跑起来之后终端会像流水线一样源源不断吐出数据——注意get_search_index返回的是一个生成器它不会一次性把所有结果塞进内存而是按需一条条吐给你就像传送带上按顺序出货物的分拣机数据量再大也不怕。前几行输出大概是这样的{keyword: [露营], type: all, date: 2024-01-01, index: 2430} {keyword: [露营], type: all, date: 2024-01-02, index: 2156} {keyword: [露营], type: all, date: 2024-01-03, index: 2019}每条记录包含四个字段翻译一下字段含义keyword关键词列表形式支持词组type端类型all 全部 / pc 电脑 / wise 移动date日期精确到天index当天的百度指数数值也就是说你只传了一个词和一个时间段它就把 365 天 × 3 种端口的 1000 多条记录全部整理好了。同样的数据手动复制粘贴得弄一两个小时。同时盯多个词先学会给关键词分组实际操作里很少有人只查一个词。露营、飞盘、CityWalk、滑雪、徒步、骑行一次全想看怎么办直接全塞进去会报错——百度指数单次请求最多接受5 组关键词这是平台侧的硬限制。qdata 为此提供了一个现成的拆分函数split_keywordsfrom qdata.baidu_index.common import split_keywords keywords [露营, 飞盘, CityWalk, 滑雪, 徒步, 骑行, 爬山] keywords_list split_keywords(keywords) # 自动按每 5 个一组切分 print(keywords_list) # [[露营, 飞盘, CityWalk, 滑雪, 徒步], [骑行, 爬山]]拿到分好组的列表后循环调用即可for group in keywords_list: for row in get_search_index( keywords_list[group], start_date2024-06-01, end_date2024-08-31, cookiescookies, ): print(f{row[date]} {row[keyword]} {row[type]}: {row[index]})再配一句忠告别把请求频率拉得太高qdata 的报错信息里写得很清楚——该账号请求过于频繁请降低请求频率。批量跑的时候在循环里适当time.sleep(2)喘口气账号更安全。顺带一提先过滤掉不存在的词有些词百度指数压根没收录查了也白查还浪费请求次数。qdata 提供了一个体检接口check_keywords_exists一次最多验 15 个词返回哪些词存在、哪些不存在from qdata.baidu_index.common import check_keywords_exists result check_keywords_exists([露营, 飞盘, 不存在的词xyz], cookies) print(result[exists_keywords]) # [露营, 飞盘] print(result[not_exists_keywords]) # [不存在的词xyz]跑大批量数据前先筛一遍能省下不少无谓的请求。再进一步按地区查、查别的指数类型搜索热度分地区看才有意义。get_search_index有个area参数默认 0 表示全国。想按省份过滤直接传省份中文名对应的编码——qdata 在qdata/baidu_index/config.py里内置了全国省份和主要城市的编码表比如北京是 911、广东是 913from qdata.baidu_index import get_search_index for row in get_search_index( keywords_list[[露营]], start_date2024-07-01, end_date2024-07-31, cookiescookies, area911, # 只看北京地区 ): print(row)除了核心的搜索指数qdata 还顺带封装了另外三兄弟用法几乎一模一样get_news_index媒体指数反映资讯报道的热度get_feed_index资讯指数反映内容分发场景的热度get_live_search_index实时搜索指数按小时粒度返回适合盯突发热点。from qdata.baidu_index import get_news_index, get_live_search_index # 媒体指数 for row in get_news_index(keywords_list[[露营]], start_date2024-01-01, end_date2024-03-31, cookiescookies): print(row) # 实时指数无需起止日期按小时返回 for row in get_live_search_index(keywords_list[[露营]], cookiescookies): print(row) 小贴士这些函数的实现都集中在qdata/baidu_index/目录下想深入了解某个接口是怎么拼请求、怎么解密的直接翻baidu_index.py、extended_baidu_index.py和live_baidu_index.py即可代码注释都是中文读起来不费劲。收尾把数据落成文件才算完事数据在终端里刷屏没有意义最终要落到表格里。最简单的办法是攒成列表后用 pandas 导出import pandas as pd rows [] for row in get_search_index(keywords_list[[露营]], start_date2024-01-01, end_date2024-12-31, cookiescookies): rows.append(row) df pd.DataFrame(rows) df[keyword] df[keyword].apply(lambda x: ,.join(x)) df.to_excel(camping_index.xlsx, indexFalse) print(df.head())到这里你从打开浏览器手动查升级成了写脚本一键拉数。以后老板再要数据改改关键词列表和时间段重跑一次几分钟交付。如果运行中遇到问题别慌先看报错里带不带ERROR-前缀——qdata 会把错误归类比如ERROR-20000表示 Cookie 失效需要重新获取ERROR-20001表示关键词超了 5 组。拿不准就去翻仓库里的examples/test_baidu_index.py和examples/baidu_index_best_practice.py前者是各接口的最小可运行示例后者是带关键词清洗、请求容错、断点续跑的完整生产脚本照着抄就能用。现在打开终端装好 qdata用你自己的账号取一次 Cookie把上面第一段代码跑起来——去收获你的第一行搜索指数数据吧。【免费下载链接】spider-BaiduIndexdata sdk for baidu Index项目地址: https://gitcode.com/gh_mirrors/sp/spider-BaiduIndex创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考