GitHub上知乎数据爬虫小结

最近导师要求我去 知乎上爬取一些数据,给即将来我们实验室的intern们做进一步的分析和研究。我在 GitHub上面查了相关的开源代码,发现已经存在很多爬取知乎数据的项目,所以我就把相关的项目总结到这个博客中。


zhihu-python:获取知乎信息

zhihu-python 采用 Python2.7 编写,用来方便地获取知乎上各种内容的信息,并且可以方便地将答案备份导出为 txt 或 markdown 文件。由于知乎官方目前没有提供 api,所以有了此项目的存在。

API Support

  • zhihu.Question
  • zhihu.User
  • zhihu.Answer
  • zhihu.Collection
  • zhihu.Column
  • zhihu.Post

Code Samples

1
2
3
4
5
6
7
8
9
# 获取某个问题的全部回答并导出
from zhihu import Question
url = "http://www.zhihu.com/question/24269892"
question = Question(url)
answers = question.get_all_answers()
for answer in answers:
answer.to_txt()
answer.to_md()
1
2
3
4
5
6
7
8
9
# 备份某个大V的全部回答
from zhihu import User
user_url = "http://www.zhihu.com/people/jixin"
user = User(user_url)
answers = user.get_answers()
for answer in answers:
answer.to_txt()
answer.to_md()

phpspider – PHP蜘蛛爬虫框架

phpspider是一个爬虫开发框架。使用本框架,你不用了解爬虫的底层技术实现,爬虫被网站屏蔽、有些网站需要登录或验证码识别才能爬取等问题。简单几行PHP代码,就可以创建自己的爬虫,利用框架封装的多进程Worker类库,代码更简洁,执行效率更高速度更快。

Code Samples

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$configs = array(
'name' => '糗事百科',
'domains' => array(
'qiushibaike.com',
'www.qiushibaike.com'
),
'scan_urls' => array(
'http://www.qiushibaike.com/'
),
'content_url_regexes' => array(
"http://www.qiushibaike.com/article/\d+"
),
'list_url_regexes' => array(
"http://www.qiushibaike.com/8hr/page/\d+\?s=\d+"
),
'fields' => array(
array(
// 抽取内容页的文章内容
'name' => "article_content",
'selector' => "//*[@id='single-next-link']",
'required' => true
),
array(
// 抽取内容页的文章作者
'name' => "article_author",
'selector' => "//div[contains(@class,'author')]//h2",
'required' => true
),
),
);
$spider = new phpspider($configs);
$spider->start();

Running Interface


zhihuspider

网站「看知乎」后台爬虫的源码,使用node.js编写。

重要通知: 由于知乎的个人页面改版,此爬虫代码已失效。仅供大家下载研究之用。


知乎数据API接口(node.js)

知乎已经更新为 https, 本项目 \< 1.0.0 不能再使用了. 请升级

API Support

  • User API (用户信息)
  • Post API (专栏文章)
  • Answer API (答案)
  • Question API (问题)
  • Topic API (话题)

Code samples

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
let zhihu = require('zhihu');
let username = 'shanejs';
zhihu.User.info(username).then(function(user){
console.log(user);
});
/* You'll get
{
answer: 14,
post: 0,
follower: 529,
profileUrl: 'https://www.zhihu.com/people/shanejs',
name: '狂飙蜗牛',
sex: 'male'
}
*/

zhihu_spider

此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo,下载这些数据感觉也没什么用,就当为大家学习scrapy提供一个例子吧。

System Overview


知乎日报的 Spider-Man

Node.js + Vue.js + MongoDB 的知乎日报爬虫项目

后端: Node.js + Express + MongoDB; 使用 Express 搭建 web 服务,爬虫爬取的数据用 MongoDB 存储; 用 node-jieba分词 分析正文的tag,做则更能准确的数据分析和内容搜索 (doing)

前端 ES6 + Vue + Webpack; 基于 Vue2.0 的单页面应用 用webpack做前端代码构建; 数据统计的页面使用原生 ES6 代码编写,单独配置了webpack做构建,没有和 Vue 的webpack构建代码混在一起。


知乎爬虫————实现验证码自动识别

  1. 使用keras框架搭建小型VGG卷积神经网络:
    网络分为四个卷积层(卷积核3X3),两个采样层。一个全连接层
  2. 从www.zhihu.com/captcha.gif爬取验证码图片作为训练样本
  3. 分别训练出一个切割器和一个识别器
  4. 网络模型和网络权重保存在.h5文件中可直接读取
  5. 只需修改zhihu.py文件中的登录邮箱及密码,运行zhihu.py即可
    当然前提是要先安装好keras:)
  6. keras的安装可参考 https://keras-cn.readthedocs.io/en/latest/

ZhihuTrend

知乎大数据分析与热点生成。

这是我在分析知乎用户数据时候写的爬虫,能爬到知乎用户公开信息以及个人回答。关于爬取分析结果可以看这篇文章: 知乎核心用户大数据报告:你知道知乎的男女比例是多少吗?

Comments: 这个Repo在我的Mac上测试无法正常运行,crapy框架没有问题,但是数据无法正确保存到MySQL数据中。


python_zhihu

一个知乎爬虫(最新),模拟登录,获取答案,
python环境:python3.X 依赖的包:requests


知乎关系网爬虫


zhihu_fun

基于 Selenium 的知乎关键词爬虫,仅支持 Python 3


A Store of Spiders

知乎爬虫: 有两个版本,数据库版本和JSON文件版本。具体说明参见项目内部说明文档。


zhihu-go:知乎非官方 API 库 with Go

这是一个非官方的 知乎 API 库,用 Go 实现。
本项目基本上是把 zhihu-python 和 zhihu-py3 从 Python 移植到了 Go. 相比之下,比 zhihu-python 的 API 更丰富,比 zhihu-py3 少了活动相关的 API.
注意:知乎的 API、前端等都可能随时会更新,所以本项目的接口可能会有过时的情况。如果遇到此类问题,欢迎提交 issue 或 pull requests.


知乎爬虫

在知乎看到一个可视化话题的文章,所以一时心血来潮,打算用Java也写一个爬虫并且集成到Spring中,结合ECharts生成人物关系,当然,既然爬一次,个人信息也都要获取到。 那么今天起起(结束日未知,目录也会根据实际情况进行更新),我将写一个系列的爬取知乎的爬虫文章,一直到数据可视化完成(完成后,爬虫部分将使用Scala重写)。


Scrapy爬虫 - 获取知乎用户数据

采用Scrapy框架,爬取的数据保存在MySQL数据库中

登陆知乎的界面www.zhihu.com/login/email,这个url已经失效了,所以这个repo里面的代码已经无法正常登陆知乎,所有不能从知乎网站上爬取数据。


zhihu_spider

抓取给定知乎问题链接下所有图片,代码包括后台 代码以迁移到此


者也 - 知乎汉字验证码识别程序

知乎用户登录会要求识别一个古怪的验证码
此项目包含:

  • 字模生成训练集合 GenerateTrainingSet.ipynb
  • 训练卷积神经网络 keras.ipynb
  • 高斯混合模型切图 GMM.ipynb

在线测试地址 http://zheye.shidaixin.com


抓取知乎问题

一个简单的抓取知乎所有问题的小爬虫,通过该爬虫可建立知乎的问题种子库,便于抓取热 门问题和回答,或满足其它的需求.


知乎数据分析

使用scrapy和pandas完成对知乎300w用户的数据分析。首先使用scrapy爬取知乎网的100w,用户资料,最后使用pandas对数据进行过滤,找出想要的知乎大牛,并用图表的形式可视化。


zhihu_spider

大规模知乎用户爬虫

  1. 使用python的request模块获取html页面,注意要修改自己的cookie,使得我们更像是使用浏览器访问
  2. 使用xpath模块从html中提取需要的关键信息(姓名,职业,居住地,关注人等)
  3. 使用redis作为队列,很好的解决并发和大规模数据的问题(可以分布式)
  4. 使用bfs宽度优先搜索,使得程序得以不断扩展持续搜索用户
  5. 数据存储至no-sql数据库:mongodb(高效轻量级并且支持并发)
  6. 使用python的进程池模块提高抓取速度
  7. 使用csv,pandas,matplotlib模块进行数据处理(需要完善)

JavaZhiHuSpider

Java知乎爬虫:爬取用户信息 已爬10w(理论能爬完所有关注了任意话题的用户信息)
没有使用框架,httpclient连接池+线程池+正则实现.


java webspider

知乎爬虫,基于webmagic框架 .A java web spider base on webmagic.


For any problems or questions, contact me: mingfei.sun.hk@gmail.com

0%