# zhihu_spider
此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo,下载这些数据感觉也没什么用,就当为大家学习scrapy提供一个例子吧。
## 使用方法
### 本地运行
爬虫程序依赖mongo和rabbitmq,因此这两个服务必须正常运行和配置。为了加快下载效率,图片下载是异步任务,因此在启动爬虫进程执行需要启动异步worker,启动方式是进入zhihu_spider/zhihu目录后执行下面命令:
```
celery -A zhihu.tools.async worker --loglevel=info
```
### docker部署
进入zhihu_spider后执行```docker-compose up``` ,进入container后和本地运行方法相同,依次启动mongo、rabbitmq、异步任务、爬虫进程即可。docker采用的image可以参见我的另一个项目[spider-docker](https://github.com/LiuRoy/spider_docker)获取。
## 流程图
![流程图](doc/流程图.png)
* 请求[https://www.zhihu.com](https://www.zhihu.com)获取页面中的_xsrf数据,知乎开启了跨站请求伪造功能,所有的POST请求都必须带上此参数。
* 提交用户名,密码已经第一步解析的_xsrf参数到[https://www.zhihu.com/login/email](https://www.zhihu.com/login/email),登陆获取cookies
* 访问用户主页,以我的主页为例[https://www.zhihu.com/people/weizhi-xiazhi](https://www.zhihu.com/people/weizhi-xiazhi), 如下图:
![](doc/主页.png)
解析的用户信息包括昵称,头像链接,个人基本信息还有关注人的数量和粉丝的数量。这个页面还能获取关注人页面和粉丝页面。
* 由上一步获取的分页列表页面和关注人页面获取用户人际关系,这两个页面类似,唯一麻烦的是得到的静态页面最多只有二十个,获取全部的人员必须通过POST请求,解析到的个人主页再由上一步来解析。
## 代码解释
scrapy文档非常详细,在此我就不详细讲解,你所能碰到的任何疑问都可以在文档中找到解答。
![代码](doc/代码.png)
* 爬虫框架从start\_requests开始执行,此部分会提交知乎主页的访问请求给引擎,并设置回调函数为post_login.
* post\_login解析主页获取\_xsrf保存为成员变量中,并提交登陆的POST请求,设置回调函数为after\_login.
* after\_login拿到登陆后的cookie,提交一个start\_url的GET请求给爬虫引擎,设置回调函数parse\_people.
* parse\_people解析个人主页,一次提交关注人和粉丝列表页面到爬虫引擎,回调函数是parse\_follow, 并把解析好的个人数据提交爬虫引擎写入mongo。
* parse\_follow会解析用户列表,同时把动态的人员列表POST请求发送只引擎,回调函数是parse\_post\_follow,把解析好的用户主页链接请求也发送到引擎,人员关系写入mongo。
* parse\_post\_follow单纯解析用户列表,提交用户主页请求至引擎。
## 效果图
![people](doc/people.png)
![relation](doc/relation.png)
![image](doc/image.png)
没有合适的资源?快使用搜索试试~ 我知道了~
python知乎评论爬虫源代码
共111个文件
sample:10个
py:10个
png:6个
需积分: 42 100 下载量 74 浏览量
2018-03-21
11:25:10
上传
评论 5
收藏 3.25MB ZIP 举报
温馨提示
python知乎用户评论爬虫源代码 最完整的爬虫源码 python知乎用户评论爬虫源代码 最完整的爬虫源码
资源推荐
资源详情
资源评论
收起资源包目录
python知乎评论爬虫源代码 (111个子文件)
03f3ef129e6d8d7d8354f39c54efaddac3c587 161B
08c4f4a27e5416858182c36ee7aaf2e5da37b3 407KB
09c5a5373825518ccde09f5963540a8a40fec8 90KB
0a137ec4d663b3d31fbcf3c594d6c6c0f965f9 85B
0c3791f27f93875e401c3e62c0c995f1549ecc 99KB
0d4bf811d303764c738da29436250ce66f50d5 30B
0d84ddc29e60bb7a454e509353cdba7a6068fc 45B
104cd95367612821ae9801be4babe91d7c52a7 3KB
10777cea71622bc71361c35a6aafe7779fd9c4 88KB
114a3061e684c862cd3cb21c3b1e89e8bb51f3 89B
17b528d7b26b992fa93d927bc0763de4fbd9b2 192B
1db6eebc7c22cefe92e21a30904224586e62e2 119B
2cba5721cee1e6d98b2849820bec0c0dba6fb8 186B
2ed6cc148258b3b52deb6a76264d921ae31ffc 219B
32ca2f8552bb4d619ef369ca88e6d74e0779b2 252B
360a03caee8c22b270be4da0500bd71d423183 118B
3b4b93a6eeb347d2a2c2c029ab4f2c1fe57be2 152B
3b6ac1631a731297b15ccc752543a0bc7272f6 278KB
3ce78f7a3602e0e4eb280f6c8886ba42654f18 188B
3e695ea250f36aa0dfab2ff0fd80e8062d55ea 186B
4393a68e982319039b28b5c4dbcf2614b53957 87B
4993e0654930d862d47ebe01bd99bedf30446c 118B
4e45ac9e6cbf8ad77027bfc0722f0672a912ed 1KB
51ae52beab2296045858aaf69ed0b81e323bfe 160B
51ecf2345e87de33e51e18ee03767a3075b911 2KB
533b25cd58dd4d8b0d0791d4f8daf4438b205b 75B
5e532ae56fcad9cd5e352dcf3838aa18e940da 75B
60ce0286b7633640c545e804d3e2f998e6b67b 438B
74835a9fc535400b567280e557e37de8c619bc 54B
75a5f8703eb1ecf413a0984c995596c5782ae8 183B
89fd90b2b94c3319c3c0e57efe137876761dac 2KB
8abd50a40a398dca1485bef37fdb8f7d5929bc 249B
8c5d42fc4ee2c7ad717dee6cdd405b7be6a8d7 130B
9222780e05c465bae546174a9fbe6e3f85d9f1 660KB
966a7d64367dacfc5840fa4418e831ec8f2692 85B
9de29bb2d1d6434b8b29ae775ad8c2e48c5391 15B
a0311d8c1920881b842c6ffe6045fa909dc823 248B
a3c95845ca74cb66dc8eb94035c3b8dc221bf1 61B
ab9458bae15daebe69ef0a141086ee8865e259 161B
af32f333f8e0d04a7f42ea67e92822816cc1a3 2KB
aff817188df00323b770ef495f5f08e808cf4e 219B
b0812e90d603e28e70cdaf218123189e8d7d2a 547B
b5a49e28db83185f9a4a6c37a4416985464576 228B
b7fcdc263fb9312e652aa8e21aacf5200c962f 1KB
b8cf989a5d36c37f10e22e3fabff150d10546d 1KB
b925d294689ad9ab13c1532fb7ba8c556b5ea7 166B
c31045258d06c67f5ee082030c30375d386b12 435B
ca04a25e9eb3cd3e41d317323b4e94ac3a6f66 39B
ce5cf2209533cdc9248bb952a6aa19aa2849c4 1KB
scrapy.cfg 265B
config 305B
d34c8515e89d87d3a1e12187b728f09546215c 370B
d5be324efe79f8e0f9740a53d845a688edbabf 192B
d689ac51d69c5e1dbbe80083c2b20a39f8bb79 134B
description 73B
e1d8f31654ffa8f1a63ad0945a3e6b2c9bd6dd 2KB
e60e399700f65bf398e7c1b934ade1d7eb9ea1 228B
eb0304aa6e76a826b59c002c1e8baa05c03501 209B
ebe72edb4a0aec09c25c640f295e89bb4037b7 187B
ec8f13a49eb9bdbbe341945e836f4a784a4f4e 156B
exclude 240B
f3c73557930027eb7e397e8291cf280a92610f 30B
f3df64c8d993914cbaa3d75a80e179e18a3978 219B
f5e7458cb01268f05b13b32b83c06a1ef5942e 54B
f6be0d041ad35f1c146679950f122ece29e96e 98B
f721ef7b99e93ba28706c15636554a2e146b4a 259B
f86e1152ca9eb7888b83b43b80d3fa99109d2d 1015B
.gitignore 34B
流程图.graffle 3KB
HEAD 188B
HEAD 188B
HEAD 32B
HEAD 23B
zhihu_spider.iml 336B
index 2KB
master 188B
master 41B
README.md 3KB
packed-refs 107B
image.png 736KB
people.png 520KB
relation.png 403KB
主页.png 123KB
代码.png 109KB
流程图.png 95KB
profile.py 8KB
settings.py 4KB
pipelines.py 3KB
items.py 1KB
async.py 727B
constants.py 721B
__init__.py 165B
main.py 100B
__init__.py 48B
__init__.py 0B
pre-rebase.sample 5KB
update.sample 4KB
pre-commit.sample 2KB
pre-push.sample 1KB
prepare-commit-msg.sample 1KB
共 111 条
- 1
- 2
资源评论
云哪里去了
- 粉丝: 2
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功