## zhihu-crawler-people
一个简单的分布式知乎爬虫,抓取知乎用户个人信息。
使用该爬虫做的数据分析:[大数据报告:知乎百万用户分析](http://yangyingming.com/article/389/)
**该爬虫的解析**:[如何写一个简单的分布式知乎爬虫?](http://www.yangyingming.com/article/392/)
### 依赖
* BeautifulSoup
* pymongo
* redis
* requests
### 安装
* 搭建主机数据库:MongoDB + Redis。
* 搭建代理池 [qiyeboy/IPProxyPool](https://github.com/qiyeboy/IPProxyPool)
* 修改 common.py 18行,配置数据库。如果你设置了权限认证,那么请修改注释部分的认证信息,并去掉注释。
```
# 数据库设置
redis_host = 'your_ip' # redis 主机地址
redis_port = 6379 # redis 主机端口
# redis_pwd = 'your_password' # redis 访问密码
mongo_host = 'your_ip' # mongodb 主机地址
mongo_port = 27017 # mongodb 主机端口
# mongo_user = 'your_user' # mongodb 登陆用户
# mongo_pwd = 'your_password' # mongodb 用户密码
```
* 修改 ProxyIP.py 8行,配置代理池请求IP。
```
host = 'http://your_proxy_pool_ip:8000' # 代理池请求IP
```
* 如果你设置了数据库的权限认证,那么请将 info_crawler.py、list_crawler.py、test_speed.py 中 Init() 函数的连接数据库部分替换成注释中的代码。
### 分布式爬虫架构
redis 中设置五个集合:**待抓取节点集合** 和 **个人信息抓取成功节点集合** 和 **个人信息抓取失败节点集合** 和 **列表抓取成功节点集合** 和 **列表抓取失败节点集合**。
它们在 Redis 中分别命名为 **waiting / info\_success / info\_failed / list\_success / list\_failed**。
它们的关系为:
![](http://www.yangyingming.com/uploads/markdownx/2017/7/c4595153-977e-4ee0-b5a7-217c31157ce2.png)
**个人信息抓取进程** 从 待抓取节点集合 中随机取出一个节点,抓取该节点代表的用户信息。如果抓取成功,加入 个人信息抓取成功节点集合,如果抓取失败,加入 个人信息抓取失败节点集合。
**列表抓取进程** 从 个人信息抓取成功节点集合 中随机取出一个节点,抓取该节点的 follower 列表。如果抓取成功,加入 列表抓取成功节点集合,如果抓取失败,加入 列表抓取失败节点集合。
整个分布式架构采用 **主从结构**:主机维护的数据库,配合从机的 info_crawler 和 list_crawler 爬虫程序,便可以循环起来:info_crawler 不断从 waiting 集合中获取节点,抓取个人信息,存入数据库;list_crawler 不断的补充 waiting 集合。
主机和从机的关系如下图:
![](http://www.yangyingming.com/uploads/markdownx/2017/7/b08b1bc1-36a0-46a9-a844-3def95e249f1.png)
### 大数据报告:知乎百万用户分析
使用该爬虫做的数据分析,全文见:[大数据报告:知乎百万用户分析](http://yangyingming.com/article/389/)
#### 知乎的男女比例?
首先来看看知乎用户的男女比例,以当前样本数据统计的结果接近 **1:1**,其中男生偏多一些。(其实还有很大一部分性别不明的用户,被我略掉了 ╮(╯▽╰)╭)
![](http://yangyingming.com/uploads/markdownx/2017/7/e5ceffab-2afb-44d8-84ef-c602ab5cf17b.png)
**蓝色为男生,红色为女生**。具体数据为:
男生:1,202,234 人,占 51.55%
女生:1,129,874 人,占 48.45%
#### 知乎用户都是哪里人?
再来看看**全国(全球?)都有哪些地方的人在玩知乎**:
![](http://yangyingming.com/uploads/markdownx/2017/7/d67b117f-1363-4489-b3f8-8b2bb0770ea2.png)
由上图可以看到,**知乎用户中一线城市用户占较大的比重**,北上广深皆在词云的中心位置(文字越大,比重越大)。我们再来看看具体的排名(前十名):
![](http://yangyingming.com/uploads/markdownx/2017/7/79272e4b-2483-4936-afd5-afbd7f21cc71.png)
知乎用户居住地前十名依次是:**北京、上海、杭州、成都、南京、武汉、广州、深圳、西安、重庆**。
你可能发现了Y坐标里每座城市的用户数并不多,这是因为有大概260万的知乎没有填写“居住地”这一栏~ 以下分析也有可能出现用户没有填写某一栏信息的情况,我会把这些用户忽略掉,以保证展示图表的准确性。
#### 知乎的职业分布?
以下显示**知乎主流职业**,同样根据知乎用户个人信息里填写的职业为准:
![](http://yangyingming.com/uploads/markdownx/2017/7/7573ec55-bcf2-40c7-b7dc-34d3d117b576.png)
由上图可以看到,知乎用户中**学生用户占据多数**,其它的比如产品经理、程序员、运营、HR数量也不少。我们看一下具体的排名(前十名):
![](http://yangyingming.com/uploads/markdownx/2017/7/5c22df3e-c26f-49f5-a6bd-2197e9db439d.png)
由上图可以看到,知乎用户中“学生”的比重独占鳌头,我们把“学生”去掉,来看看**正经些的知乎职业排名**:
![](http://yangyingming.com/uploads/markdownx/2017/7/dced3ee9-f009-420a-b96a-4b7c234ce5c6.png)
去除学生后,知乎主流职业比重从大到小依次是(前十名):**产品经理、自由职业、程序员、工程师、设计师、腾讯、教师、人力资源(HR)、运营、律师**。可以看到,除了一些互联网公司的常见职位外,教师和律师用户在知乎中也占据不小的比重。
下面我们结合 **性别** 和 **居住地** 来分析一下知乎的主流职业。
**知乎主流职业的性别分布**:
![](http://yangyingming.com/uploads/markdownx/2017/7/33c3fb3c-aa80-4af4-8aa4-b05fa58bd6a7.png)
上面这张饼图的内圈表示各主流职业在前十名中所占的比重,外圈表示该职业从业者中的男女比例,蓝色为男性,红色为女性。我们再用一张直方图来表示:
![](http://yangyingming.com/uploads/markdownx/2017/7/58d76873-aee3-4b83-b068-c22916c88937.png)
同样蓝色代表男性,红色代表女性,从左到右的职业在知乎中的数量依次下降。可以看到,**知乎大部分主流职业中主要为男性占主导**。前 10 名的主流职业中有 8 个职业的男性从业者比女性多,其中以 **程序员** 的男女比例差距最为悬殊(-_-|||),以 **设计师** 男女比例差距最小,看来设计师从业人员男女比例较为均衡。其它的,比如产品经理、自由职业者、律师中,均为男性从业者多于女性。而前 10 名剩下的 2 个职业——**教师、人力资源(HR)**——女性从业者要多于男性,其中以 **人力资源(HR)** 男女比例差距最为悬殊,**教师**的男女比例虽不那么夸张,但女性也远远多于男性(也许是因为男性教师不怎么上知乎?)。
看完了知乎各职业的性别分布,我们再用一张热力图,来观察**知乎主流职业(前五名)在各个地区的分布情况**:
![](http://yangyingming.com/uploads/markdownx/2017/7/a66c6cb9-0203-4bec-85f6-0c766a23faba.png)
这里我为了展示方便,**去掉了产品经理**,你只需要知道产品经理在各地人数都是最多的…… 不明白知乎上怎么这么多产品经理,可能是为了方便宣传他们的产品?
从上图可以看出,知乎各主流职业大部分集中在**北京和上海**两地,更准确地说,大部分都集中在北京,但是**人力资源(HR)**是个例外,他们更多集中在上海。我们再来看看其他职业,**程序员**分布最多的城市依次是:**北京、上海、广州、杭州、厦门**。北京占得比重最大,简直绿的发黑,看来北京是程序员的天堂?其中深圳没有上榜,让我很奇怪。**设计师**分布最多的城市依次是:**北京、上海、杭州、深圳、武汉**。设计师的地区分布比较平均,各个城市都有一定�
没有合适的资源?快使用搜索试试~ 我知道了~
Python图片爬虫服务..zip
共28个文件
py:13个
png:5个
xml:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 48 浏览量
2024-02-27
20:24:15
上传
评论
收藏 2.96MB ZIP 举报
温馨提示
Python图片爬虫服务..zip
资源推荐
资源详情
资源评论
收起资源包目录
Python图片爬虫服务..zip (28个子文件)
Lifecat-Python-master
.idea
vcs.xml 180B
misc.xml 305B
modules.xml 403B
image_processing
fastcv2
__pycache__
cv2contour.cpython-36.pyc 211B
.gitignore 58B
images
show-2.png 770KB
show-1.png 2.04MB
com.ten.lifecat
__init__.py 0B
crawler
distributed_crawler
__init__.py 0B
zhihu
__init__.py 0B
screenshots
账号被封.png 26KB
知乎异常流量.png 33KB
爬虫进程流程图.png 116KB
list_crawler.py 10KB
test_speed.py 3KB
ProxyIP.py 1KB
common.py 1KB
requirements.txt 147B
info_crawler.py 7KB
Crawler.py 3KB
.gitignore 6B
README.md 15KB
kill_all_info.sh 87B
__init__.py 0B
images_crawler
__init__.py 0B
download_images_v2.py 3KB
download_images_v1.py 2KB
README.md 915B
共 28 条
- 1
资源评论
武昌库里写JAVA
- 粉丝: 3525
- 资源: 2059
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功