抓取知乎每日吐槽
2015-07-26 20:33
176 查看
【本文首发于:http://www.karottc.com/blog/2015/07/26/zhihu-sarcasm/】
—— by karottc
知乎日报 里面有一节,叫做⎾如何正确的吐槽⏌,里面有很多很有意思而有短小的回答,基本上我我每天都会看一眼。 所以我就写了脚本把他们全部抓了下来,放到自己的服务器上,同时每天还在定时去抓取当天新出来的数据,然后用 swift 写了一个 app 来从自己的服务器获取数据来看。
下面记录一下做这件事的过程。
然后,我用 nginx + django 搭了一个服务器,提供了三个接口,都是返回 JSON 格式的数据,三个接口具体如下:
可以看得出来,我这三个接口都是为了给 app 端调用而设计提供的,所以下一步就是完成一个 app 把这些内容显示出来。
通过网络请求获取数据;
解析 JSON 数据然后根据一定的排版显示。
当然,我也是只实现了一个极其简陋的效果,直接放图好了:
上面两个图是历史列表和具体某一天内容的截图,下面再放一个应用图标的图:
上面有个图标乱入了,这个是我学习 swift 的做的一个练习,具体可以看这篇:点我.
整个过程大概就是这样。
app 源码在这里:点我。
2015.07.26
—— by karottc
知乎日报 里面有一节,叫做⎾如何正确的吐槽⏌,里面有很多很有意思而有短小的回答,基本上我我每天都会看一眼。 所以我就写了脚本把他们全部抓了下来,放到自己的服务器上,同时每天还在定时去抓取当天新出来的数据,然后用 swift 写了一个 app 来从自己的服务器获取数据来看。
下面记录一下做这件事的过程。
抓取数据
要抓取知乎的吐槽数据,第一步就是要知道它对应的 URL ,这个获取方法也很简单,直接抓个包就能知道了,具体的形式大概如下这样:http://news-at.zhihu.com/api/4/section/2/before/xxxxxx, 这个是获取整个吐槽的标题列表的url;
http://news-at.zhihu.com/api/4/story/xxxxx, 这个是获取具体某一天的内容的url。
创建数据库
这个数据量并不大,我建了两张表,一张存索引,一张存每天具体的内容。如下图:搭建服务器
有了数据,下一步就是提供 CGI 接口给外部调用获取数据,然后显示。然后,我用 nginx + django 搭了一个服务器,提供了三个接口,都是返回 JSON 格式的数据,三个接口具体如下:
http://104.128.85.9:8001/api/gethomelist:获取首屏的数据列表;
http://104.128.85.9:8001/api/getnextlist?timestamp=1434666598:下拉刷新的时候获取新增数据;
http://104.128.85.9:8001/api/getstorydetail?id=4827840:获取某一天具体的内容。
可以看得出来,我这三个接口都是为了给 app 端调用而设计提供的,所以下一步就是完成一个 app 把这些内容显示出来。
app 端显示
app 端的工作就是:通过网络请求获取数据;
解析 JSON 数据然后根据一定的排版显示。
当然,我也是只实现了一个极其简陋的效果,直接放图好了:
上面两个图是历史列表和具体某一天内容的截图,下面再放一个应用图标的图:
上面有个图标乱入了,这个是我学习 swift 的做的一个练习,具体可以看这篇:点我.
整个过程大概就是这样。
附件资料
上面提到的服务和抓去知乎数据的代码在这里:点我。app 源码在这里:点我。
2015.07.26
相关文章推荐
- UVA 156 Ananagrams
- hdoj 1002A + B Problem II
- 拆机之戴尔笔记本
- Swift学习笔记(十)——Swift对数据溢出的智能检查
- zoj1334
- Contains Duplicate
- Enterprise Library 5.0 学习笔记
- java实现将资源文件转化成sql语句导入数据库
- 使用getrusage获取进程使用系统资源信息
- Javascript MVC 学习笔记(三) 视图和模板
- JavaEE基础---java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date
- 关于学习的游泳的原理
- uva11021(概率)
- 八大排序-快速排序
- 基于NVIDIA显卡的硬编解码
- 使用Byte的一次错误
- 环绕型布局
- 算法和数据结构
- ZOJ Monthly, July 2015
- UVA 409