今天我就给大家展示一下如何用python直接采集百度指数的数据。百度指数是基于百度海量网民行为数据的数据分析平台。可以告诉用户某个关键词在百度的搜索规模有多大,
今天我就给大家展示一下如何用python直接采集百度指数的数据。
百度指数是基于百度海量网民行为数据的数据分析平台。可以告诉用户某个关键词在百度的搜索规模有多大,一段时间内的涨跌以及相关新闻舆论的变化,关注这些词的都是什么样的网民,分布在哪里,搜索过哪些相关的词。
白石老师分享了如何使用uiautomation采集百度指数:如何批量获取百度指数?
不过我个人感觉这种方法好像是一刀杀鸡。selenium对于网页来说已经足够了。当然,对于专门针对selenium进行反抓取检测的网页,需要进行特殊的修改。
本文不演示如何使用UI自动化工具收集百度指数。为了使收集更容易,接口将被直接读取和解析。
关于uiautomation,PC端的UI自动化可以在教程中查看:
你得先登录打开百度指数才能找到并查看指数。例如,让我们比较一下上周python和Java的一个索引:
当鼠标移动到每天的坐标时,会显示当天的数据,例如:
如果我们采用UI自动化,我们至少要模拟移动到每日坐标。
打开开发工具,重新查询数据采集界面:
的实际索引数据存储在该数据字段中,但它是以某种加密方式加密的。
那么注意,第二接口的参数与当前接口返回的数据的值一致。
此时,我全局搜索decrypt,找到了加密函数:
此时,点击断点再次搜索,可以看到传入该函数的T参数与ptbk接口返回的值一致:
说明我们只需要把这个js翻译成python就可以解密加密的数据了。
我们来总结一下指数数据采集的思路:
Uniqid和加密的索引数据userIndexes通过index接口获得。
通过ptbk接口传入uniqid获取key key。
通过解密函数根据key key解密userIndexes。
让我们用代码实现它。首先,获取索引数据:
Cookie登录后需要复制粘贴,就是请求中的这个字符串(直接复制粘贴即可):
结果:
这些数据中,wise代表移动端,all代表pc端+移动端。UserIndexes是索引明细数据,generalRatio是概览数据。
我们只关心下面每个关键词的整体表现。
让我们获得uniqid并获得ptbk:
我将下面的Js代码翻译成python:
Python代码:
然后我们遍历每个关键字来解密相应的索引数据:
检查实际网页中的数据,发现确实一致:
那么我们就可以很容易的获得任意指定关键词的索引数据。下面我把它封装成一个整体,完整的代码是:
测试它:
结果很好。
本文来自肖晓明的博客,原文链接:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。
作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/145940.html