该系列为南京大学课程《用Python玩转数据》学习笔记,主要以思维导图的记录
8.2 动态新闻标题热点挖掘
课件是通过正则获取新浪新闻热点标题并绘制词云,现通过抓取今日头条热点新闻进行挖掘
获取热点新闻
通过chrome访问https://www.toutiao.com/ch/news_hot/,在开发者工具中可以看到,是有api接口可以直接获取热点新闻的json数据的。
通过分析这几个请求的网址可以发现:
首次访问:https://www.toutiao.com/api/pc/feed/?category=news_hot&utm_source=toutiao&widen=1&max_behot_time=0&max_behot_time_tmp=0
即可获取数据,并会有一个
next_behot_time
值,将该值替换掉上述url中就可获取后续的数据。注意:直接从chrome工具中看到的网址比较长https://www.toutiao.com/api/pc/feed/?category=news_hot&utm_source=toutiao&widen=1&max_behot_time=0&max_behot_time_tmp=0&tadrequire=true&as=A1258C7D00422B9&cp=5CD032F26B29AE1&_signature=z.t.3AAAkzMhvSCXMjx438.7f8,后面的一些被删除的参数代表的是浏览器等信息,如果不删除会导致python请求异常。
分词
分词用到了jieba分词,可以直接调用jieba第三方包进行分词,要注意停用词的使用,词频需要自行统计。
词云绘制
词云绘制用到了wordcloud第三方库,课件中采用默认词云生成,一般默认的词云比较难看,可以通过numpy计算原图的颜色,并对生成的词云进行重新上色的方式改善效果。
需要注意的是图片不能太小,可能会导致异常。
实现:
1 | # -*- coding: utf-8 -*- |
原图:
最终效果: