抓取知乎每日吐槽

【本文首发于: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

时间: 2024-11-05 12:06:14

抓取知乎每日吐槽的相关文章

一个抓取知乎页面图片的简单爬虫

在知乎上看到一个问题  能利用爬虫技术做到哪些很酷很有趣很有用的事情?发现蛮好玩的,便去学了下正则表达式,以前听说正则表达式蛮有用处的,学完后觉得确实很实用的工具.问题评论下基本都是python写的爬虫,我看了下原理,感觉爬一个简单的静态网页还是挺容易的.就是获取网站html源码,然后解析需要的字段,最后拿到字段处理(下载).想起我学java的时候有个URL类好像有这个功能,便去翻了下api文档,发现URLConnection果然可以获取html源码. 首先从核心开始写,获取网页源码 packa

用python+selenium抓取知乎今日最热和本月最热的前三个问题及每个问题的首个回答并保存至html文件

抓取知乎今日最热和本月最热的前三个问题及每个问题的首个回答,保存至html文件,该html文件的文件名应该是20160228_zhihu_today_hot.html,也就是日期+zhihu_today_hot.html 代码如下: from selenium import webdriver from time import sleep import time class ZhiHu():    def __init__(self):       self.dr = webdriver.Chr

python爬虫beta版之抓取知乎单页面回答(low 逼版)

闲着无聊,逛知乎.发现想找点有意思的回答也不容易,就想说要不写个爬虫帮我把点赞数最多的给我搞下来方便阅读,也许还能做做数据分析(意淫中--) 鉴于之前用python写爬虫,帮运营人员抓取过京东的商品品牌以及分类,这次也是用python来搞简单的抓取单页面版,后期再补充哈. #-*- coding: UTF-8 -*- import requests import sys from bs4 import BeautifulSoup #------知乎答案收集---------- #获取网页body

Python结合BeautifulSoup抓取知乎数据

本文主要介绍利用Python登录知乎账号,抓取其中的用户名.用户头像.知乎的问题.问题来源.被赞数目.以及回答者.其中数据是配合Beautiful Soup进行解析的. 首先,要解决的是知乎登录问题.在程序中登录知乎我们直接提供用户名和密码是无法进行登录的,这里我们采用一个比较笨拙的办法直接在发送请求过程中附带上cookies.这个cookies值我们可以通过在火狐浏览器登录知乎时用firebug直接捕获.cookies获取如下图所示: [info] email =youremail passw

Python分布式爬虫抓取知乎用户信息并进行数据分析

在以前的文章中,我写过一篇使用selenium来模拟登录知乎的文章,然后在很长一段时间里都没有然后了... 不过在最近,我突然觉得,既然已经模拟登录到了知乎了,为什么不继续玩玩呢?所以就创了一个项目,用来采集知乎的用户公开信息,打算用这些数据试着分析一下月入上万遍地走.清华北大不如狗的贵乎用户像不像我们想象中的那么高质量. 第一步:首先是爬虫抓取用户信息,能用图解释的绝不多废话: 但是还是得主要说下: 首先:个人感觉,在写一些小的demo时用框架就反而更显得繁琐,所以我没有使用框架,而是自己使用

PHP开发:使用PHP抓取百万知乎用户以及知识点札记

代码托管地址:https://github.com/hhqcontinue/zhihuSpider 开发前的准备 安装Linux系统(Ubuntu14.04),在VMWare虚拟机下安装一个Ubuntu: 安装PHP5.6或以上版本: 安装curl.pcntl扩展. 使用PHP的curl扩展抓取页面数据 PHP的curl扩展是PHP支持的允许你与各种服务器使用各种类型的协议进行连接和通信的库. 本程序是抓取知乎的用户数据,要能访问用户个人页面,需要用户登录后的才能访问.当我们在浏览器的页面中点击

分布式爬虫:使用Scrapy抓取数据

分布式爬虫:使用Scrapy抓取数据 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. 官方主页: http://www.scrapy.org/ 中文文档:Scrapy 0.22 文档 GitHub项目主页:https://github.com/scrapy/scrapy Scrapy 使用了 Twisted 异步网络库来处理网络通讯.整体架构大致如下(注:图片来自

fiddler 抓取手机app请求包

今天心血来潮,也不知道怎么了,想着抓抓我们公司手机app的包看看,研究研究我们公司的接口,哎,我们api文档,我自己抓包看看吧.工具选择fiddler,理由免费,用着也舒服,手机设备 iPhone6 ,app这里不介绍了. 第一步,设置代理, 打开fiddler,选择tool>Options>Connections ,设置端口号,勾选 Allow_remote computers to connect.然后ok.这样就完成了代理的设置.重启fiddler 查看电脑ip 第二步 手机链接代理服务

java抓取动态生成的网页--吐槽

最近在做项目的时候有一个需求:从网页面抓取数据,要求是首先抓取整个网页的html源码(后期更新要使用到).刚开始一看这个简单,然后就稀里哗啦的敲起了代码(在这之前使用过Hadoop平台的分布式爬虫框架Nutch,使用起来是很方便,但是最后因为速度的原因放弃了,但生成的统计信息在后来的抓取中使用到了),很快holder.html和finance.html页面成功下载完成,然后解析完holder.html页面之后再解析finance.html,然后很沮丧的发现在这个页面中我需要的数据并没有在html