抓取知乎每日吐槽
【本文首发于:http://www.karottc.com/blog/2015/07/26/zhihu-sarcasm/】
—— 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