爬虫部分
以跟话题为入口解析完整话题树并获取每个话题的话题名称、话题ID、关注人数、父话题名称、父话题ID以文件形式保存
知乎话题的URL为https://www.zhihu.com/topic/话题ID/organize/entire
一个用户可关注多个话题
程序语言
Python
依赖项
- pyquery
- urllib2
程序工作流程
- 手动获取根话题ID作为程序执行入口
- 根据话题ID获取该话题页面数据并从待抓取队列中删除该话题
- 解析该页面的话题名称、话题ID、关注人数、父话题名称、父话题ID以文件形式记录同时压入已抓取队列
- 获取该话题的子话题ID并压入待抓取队列
- 判断子话题是否获取完毕未完毕则返回步骤3
- 判断待抓取队列是否为空若不为空返回步骤1
- 执行完毕
2017/07/12程序执行结果
数据说明
topicName | topicID | focusValue | parentName | parentID |
---|---|---|---|---|
话题名称 | 话题ID | 话题关注人数 | 父话题名称 | 父话题ID |
基本信息
话题个数 | 数据条数 | 总关注人数 | 话题平均关注人数 | 80%关注量所需话题个数 | 关注人数最多的话题 |
---|---|---|---|---|---|
35963 | 57396 | 1147085961 | 31896.28 | 546 (1.5%) | 电影(人数:16926383) |
可视化部分
程序语言
JavaScript
依赖项
- d3.js(V3)
一、各话题关注量气泡图
以气泡图的形式展示各个话题的关注量
图片分辨率为4728*4960大小为5.37M放大可查看细节(服务器1兆的小水管加载可能比较耗时)
二、可展开式话题树
点击节点可折叠或展开该话题用于探查整个话题树
演示地址 (加载数据文件耗时严重)
三、话题树旭日图
旭日图(sunburst),也称为太阳图,一种圆环镶接图,每一个圆环就代表了同一级别的比例数据,离原点越近的圆环级别越高,最内层的圆表示层次结构的顶级。除了圆环外,旭日图还有若干从原点放射出去的‘射线’,这些‘射线’展示出了不同级别数据间的脉络关系。
对关注量数据由叶子节点向根节点求和,每个节点的值为该节点的关注量以及所有的子节点的关注量之和。以圆弧的弧度的弧度作为映射展示该话题在同一级别下所占的比例。点击不同的圆弧可将该话题移至第二级,第一级为该话题的父话题以此为交互方式展示整个话题树
演示地址 (加载数据文件耗时严重)
四、话题树图
展示整个话题树的脉络。线条的宽度代表关注量。鼠标覆盖可对该条枝干加粗并标注节点名称。
2019-4-11更新
数据及源码
鉴于有部分同学需要源码和数据这里临时整理至github,各位同学star后取需:)
可视化部分连接: github
爬虫部分连接: github
共同参与
由于项目开发时间较早,可能并不十分成熟,欢迎感兴趣的同学在取得数据和源码后共同参与,共同努力,使程序更规范、更效率、更美观。
参考&引用
http://blog.sina.com.cn/s/blog_49f78a4b0102wg92.html
http://www.nytimes.com/interactive/2012/11/02/us/politics/paths-to-the-white-house.html
http://blog.csdn.net/tianxuzhang/article/details/14170243