作者 | 叶庭云
来源 | AI庭云君
在实际业务中我们可能会使用爬虫根据关键词获取百度搜索指数历史数据,然后进行对应的数据分析。
百度指数,体验大数据之美。但要获取百度指数相关的数据,困难如下:
不是静态网页,并且百度指数的 URL 请求地址返回的数据,不能直接利用 json 解析提取的数据,而是加密之后的数据和uniqid,需要通过 uniqid 再次请求对应的 URL 以获取用于解密的密钥,然后在前端页面进行解密,然后再渲染到折线图中。
必须要在百度指数页面登录百度账号(获取cookie)。
需要将前端解密代码转化为 Python 后端代码,或者直接利用 execjs 直接执行 Javascript 代码也可以。
本文以获取关键词(北京冬奥会、冬奥会开幕式):近 天的百度搜索指数数据为例,讲解利用 爬虫根据关键词获取百度搜索指数历史数据的过程(以冬奥会为例),然后对冬奥会近 90 天的搜索指数可视化,以及采集媒体报道的材料做词云图。
环境:Anaconda + Pycharm
主要用到的库:requests、execjs、datetime、pandas、matplotlib、stylecloud
没有百度账号的话需要先注册,然后进入百度指数官网:
https://www.baidu.com/s?wd=百度指数
搜索冬奥会,选择近 90 天,即可看到近 90 天冬奥会搜索指数的折线图:
最终要做的就是获取这些搜索指数数据,保存到本地Excel。
首先要获取你登录之后的cookie(必须要有,否则无法获取到数据),具体的 cookie 获取如下图:
分析可以找到 json 数据的接口,如下所示:
Request URL 里,word参数后是搜索的关键词(只是汉字被编码了),days=90,代表近 90 天的数据,从当前日期的前一天往前推一个月,可以根据需要修改 days 获取更多的数据或者更少的数据。将 Request URL 贴到浏览器中访问查看(查看 JSON 数据网页,这时有个 JSON Handle 这样的插件会很方便)
可以看到以下数据:
经过对 all,pc,wise 对应的数据进行解密,和搜索指数的折线图显示的数据对比,发现 all 部分的数据就是搜索指数的数据。本次请求返回的数据都在这里了,还可以看到uniqid,而且每次刷新加密的数据和 uniqid 都会变。
经过多次分析,发现请求数据的 url 下面的 uniqid 出现在了这个 url 中,如上所示。
因此需要先对请求数据对应的 url 进行数据获取,解析出搜索指数对应的加密数据和uniqid,然后拼接 url 获取密钥,最后调用解密方法解密即可获取到搜索指数的数据。
找到了对应的url,爬虫基本思路还是那样:发送请求、获取响应、解析数据、然后对数据进行解密、保存数据。
Python代码:
解密部分也可以直接利用 execjs 执行 Javascript 代码实现,如下所示:
Python爬虫成功运行,数据保存为冬奥会搜索指数数据 90 天.xlsx。
冬奥会开幕式、北京冬奥会搜索指数近几天近似直线飙升。说明大家都非常关注啊。
这里采集一些文本材料,再做个词云图看看。
如果说 年的奥运会,中国向世界展现的是传统的文化之美!那么这一次冬奥会,中国完美地向世界展现了什么叫科技的日新月异与腾飞!
今年冬奥会开幕式真的太好看啦,惊艳全球!
总结:
Python爬虫:根据关键词获取百度搜索指数历史数据
解析 JSON 数据,加密数据的解密,数据保存到Excel
matplotlib:百度搜索指数的可视化
stylecloud:绘制词云图
往
期
回
顾
资讯
谷歌使出禁用2G大招
技术
干货满满的python实战项目!
25个Python文本处理案例
11款可替代top命令的工具!
分享
点收藏
点点赞
本文地址:http://syank.xrbh.cn/quote/6877.html 迅博思语资讯 http://syank.xrbh.cn/ , 查看更多