知乎爬虫(scrapy默认配置下单机1小时可爬取60多万条数据)

环境:

Ubuntu16.04

Python环境是ubuntu自带的python3.5.2

需要安装的软件Redis, MongoDB, Phantomjs;

需要安装的python模块:scrapy, scrapy-redis, selenium

电脑是用的小米笔记本4999元的那个版本,如果是台式机的话速度应该会更快。(ps:如果想更快,可以加大setting.py 中的 CONCURRENT_REQUESTS的值,这个值默认是16,可以调大,直到CPU使用率达到80-90%,相信速度会快很多,绝不仅仅是一分钟6000多条。当然也可以在单机上多进程爬取)

使用说明:

打开cookie.py,填入你的知乎账号密码

运行爬虫 : scrapy crawl zhishuspider 即可

分布式扩展:把代码考到新一台机器上,只需要把setting.py里的REDIS_HOST和FILTER_HOST改成主机的地址就好,其他的根据自己的具体情况修改。然后运行即可。

提示:如果你的账号数量不够多,建议把DOWNLOAD_DELAY开启(即把代码里注释的那四行取消注释掉),数值多少根据自己具体情况更改。

代码说明:

爬虫基于scrapy+redis架构进行开发、优化。

爬虫支持断点续爬。

非常简易地,便可实现分布式扩展。

使用Redis的“位”进行去重,1G的内存可满足80亿个用户ID的瞬间去重。

将种子优化到不足40个字符,大大降低了Redis的内存消耗,也提高了各子爬虫从Redis取种子的速度。

维护了一个Cookie池,各子机器共用一个Cookie池,断点续爬不会重复获取Cookie,当某个Cookie失效时会自动更新。

直接爬取通过抓包得到的json格式的链接,请求速度更快、爬取速度更快。单机一小时可爬取60多万条数据

代码中自带proxy(自动更换ip),但并未启用,经测试,只要账号数量够多,暂不需要启用,如需启用,请自行购买代理ip,并修改代码proxy.py中GetIPPOOLS()函数(我是用的大象代理,5元20000个,不是广告,挺便宜,但真心觉得不咋好用,每十个ip差不多有一个能用(延迟在2s内)),如果你是用的大象代理,就不需要修改代码。

支持手动识别验证码和自动识别验证码,如需自动登录,请自行购买云打码平台账号。默认启动的是手动识别,需要手动输入验证码。如果你想自己写个代码识别验证码,那也是可以的。

爬取内容:

用户的个人信息以及粉丝和关注的人(可以生成用户的拓扑关系图)

用户的回答

用户的提问

文章

爬取字段:

ZhihuItem(用户个人信息):

字段名 含义

user_id 用户id

user_image_url 用户头像链接

name 用户昵称

locations 用户住址

business 用户所在行业

employments 用户职业经历

gender 用户性别

education 用户教育经历

followees_num 用户关注数

followers_num 用户粉丝数

RelationItem(关系):

字段名 含义

user_id 用户id

relation_type 关系类型

relations_id 关系的人的id

AnswerItem(回答):

字段名 含义

answer_user_id 回答的用户

answer_id 回答内容的id

question_id 问题的id

cretated_time 创建的时间戳

updated_time 更新的时间戳

voteup_count 赞成数

comment_count 评论数

content 回答内容

QuestionItem(问题):

字段名 含义

ask_user_id 提问人的id

question_id 问题的id

ask_time 提问时间

answer_count 回答数量

followees_count 关注数量

title 提问标题

ArticleItem(文章):

字段名 含义

author_id 作者id

title 文章标题

article_id 文章id

content 文章内容

cretated_time 创建时间戳

updated_time 更新时间戳

voteup_count 赞成数

comment_count 评论数

关于抓包获取到的几个链接问题:

未登录状态下需要Authorization才能访问json数据的链接,带登录后的cookie访问就不需要了。

Authorization可以通过访问任意一个用户页面在请求json数据链接中的header中获取,建议通过模拟浏览器的方式获取,不过如果登陆了就不需要了,故代码中没有获取Authorization

沈阳治疗性病医院:http://www.120sysdyy.com/

沈阳治疗湿疣医院

你可能感兴趣的:(知乎爬虫(scrapy默认配置下单机1小时可爬取60多万条数据))