(2022.6)汇总下指数提取网址:
1.百度指数批量提取
http://www.datasharehome.com/bdindex/order/
2.股票代码、股票名称百度指数批量下载
http://www.datasharehome.com/bdindex_stock/stock_record/?type=stockname
http://www.datasharehome.com/bdindex_stock/stock_record/?type=stockcode
3.微指数批量提取
http://www.datasharehome.com/wbindex/order/
百度指数的作用不言而喻,可以作为研究关键词在网络搜索趋势、洞察网民兴趣和需求、监测舆情动向、定位受众特征等。是学术研究、SEO等重要的指标数量。随着网民比例不断提升,这个作用也越来越凸现。但其不像google trends一样可以免费下载,而且该指数还不断升级,改进加密算法,想要获取历史数据颇为困难。从2015年开始研究百度指数提取工具以来,目前为止(2019年5月10日),基本实现了百度指数的批量、自动、准确提取([http://www.datasharehome.com/bdindex/order/](http://www.datasharehome.com/bdindex/order/))。百度指数提取工具的经历了以下几个阶段。先整理一下备查和记录。
1.根据折线拟合+图像识别
这个阶段也是最开始接触和研究的思路。(2015年下半年-2016年上半年)
1.1 本地安装版
原理:主要根据百度指数以svg折线图显示,右侧有如下坐标轴,各指数是以值按照比例显示。所以可以根据各点的坐标和刻度,反算出各点代表值。
图 坐标轴视图 图 matlab接口文件图
此阶段工作分了2部分:1、设置参数搜索,抓取各词坐标,计算数据;2、识别坐标轴刻度。当时和朋友分工,他负责第一部分用.net开发,我负责用matlab开发识别接口,然后生成dll接口,供其调用识别。
此时坐标轴比较规范稳定,所以采用图像识别八皇后算法,对各字符进行分割,然后采用和各特征值比对的方式,识别。
图 软件界面图
软件界面如上图所示,数据采用了access数据库,采用了webbrowser浏览器,设置好参数(此时还可以在页面设置),可以对不同地区、不同趋势、不同周期数据进行抓取,时间区间的移动采用手动方式,所以可能会有重叠,所以还有去重功能。
此期间,matlab版本的dll接口也经历了3次升级。
优点:识别速度较快,操作较为简单,对服务器请求次数低。
缺点:精度不高,对于变化比较大的极端值情况容易误差大。
1.1服务器升级版
Matlab接口本地安装和调用比较麻烦。所以后面编写了一个sever放在的网络服务器上。
图 服务器端
原理:采用了windows service 主机,服务端也是用的.net编写,采用的Windows socket方式通信。这样本地只需要把坐标轴参数上传到服务器,服务器识别后返回给本地。
优点:本地安装部署简单,不会出现调用识别问题,可以设置用户注册管理,充值消费。
缺点:服务器开销较大,在线用户过多,容易宕机。
现在网上流传较多的,百度指数提取导出工具 2017.2.22 版本的都是这时候开发的,上面的qq号码也是我的,后来百度指数几经升级,已经不能用webbrowser打开了。
2.图像识别+selenium(2016-2017年)
鉴于前面所的不能获取准确值,后来又屏蔽了webbrowser,所以又开始研究通过selenium方式+ Tesseract识别方式。
原理:通过selenium控制chrome浏览器,逐个日期移动,获取每个点的拼接图像,这时候百度指数采用的css控制位移的方式来显示数值的,给的一个图片有很多乱码,经过css遮罩后显示如下图所示的字符。通过训练Tesseract,生成自己的识别库,可以达到100%准确率。
图 数值拼接图
图 程序多开图
优点:识别率高,没有误差。
缺点:速度慢,通过程序多开,实现了倍数提示,无奈每次只能识别一个数据点,所读还是很慢。对百度服务器的压力也很大。百度指数限制账号请求次数,每个账号达到一定次数后,必须要切换账号和ip。
3.破解js加密算法+代理池+cookie池(2018年至今)
鉴于前面说的,每个点都要向百度服务器请求一次,所以百度指数经常出现不响应,或者错误。所以百度又进行了升级,这次是一个时间区间进行一次的数据传输,然后通过js加密数据方式,改变了一次已请求的方式,对其服务器的请求大为降低。同时也不再采用图片化的方式,整体来说抓取的难度应该有所下降。
原理:不再是每个时间点请求一次,此时大规模采集有了可能。但是需要解决几个问题:
(1)大批量采集,封锁IP问题。这需要用到了代理池,动态维护,并且加入校验,然后存入redis数据库,定于一定数量时候启动抓取,然后校验然后放入库里。当程序提取提示ip次数过多时候,切换代理ip并把旧的删除。
(2)封闭账号问题,和ip问题类似,构建账号cookie池。动态维护代理池,百度指数限制了每个账号每天的访问次数,过了第二条账号初始化,可以继续使用。
(3)构建B-S提取平台。前面提取工具的模式是C-S模式,安装过程繁琐,而且电脑配置环境不一样,不容易成功,所以想搭建一个网站前台。通过djago搭建了一个可视化平台。
图 提取参数设置图
网页端的参数设置和百度指数的参数基本一一对应。并且增加了发送到邮箱功能,把任务提交后,开始提取,采取的是异步处理方式,程序会在后台进行提取,等提取结束后,可以自动发送到指定邮箱,而且也可以在网站后台下载数据。
图 数据管理页面图
http://www.datasharehome.com/bdindex/order/
目前平台在测试阶段,欢迎共同探讨、批评指正。