• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

zhihu-crawler: zhihu-crawler是一个基于Java的爬虫实战项目,主要功能是抓取知乎用户 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

zhihu-crawler

开源软件地址:

https://gitee.com/wycm/zhihu-crawler

开源软件介绍:

知乎爬虫

zhihu-crawler是一个基于Java的爬虫实战项目,主要功能是抓取知乎用户的基本资料,如果觉得不错,请给个star。

爬取结果

需要

  1. jdk 1.8
  2. redis
  3. mongodb

快速开始

  1. 修改zhihu/src/main/resources/application.yamlredis、mongodb相关配置,application.yaml
  2. 初始化zhihu/src/main/resources/mongo-init.sqlmongodb脚步,mongo-init.sql
  3. 设置日志路径,默认在/var/www/logslogback-spring.xml
  4. Run with ZhihuCrawlerApplication.java

使用到的接口

  • 地址(url):https://www.zhihu.com/api/v4/members/${userid}/followees
  • 请求类型:GET
  • 请求参数
参数名类型必填说明
includeStringdata[*]answer_count,articles_count需要返回的字段(这个值可以改根据需要增加一些字段,见如下示例url)
offsetint0偏移量(通过调整这个值可以获取到一个用户的所有关注用户资料)
limitint20返回用户数(最大20,超过20无效)
  • url示例:https://www.zhihu.com/api/v4/members/wo-yan-chen-mo/followees?include=data[*].educations,employments,answer_count,business,locations,articles_count,follower_count,gender,following_count,question_count,voteup_count,thanked_count,is_followed,is_following,badge[?(type=best_answerer)].topics&offset=0&limit=20
  • 响应:json数据,会有关注用户资料

特性

  • 大量使用http代理,突破同一个客户端访问量限制。
  • 支持持久化(mongodb)。
  • 多线程、爬取速度快、支持分布式爬取。

TODO

  • 新增问题、答案、文章抓取
  • 支持实时抓取,每小时更新知乎全站所有热门内容

更新

2019.02.21

  • 基于Spring Boot重构项目,支持横向扩展,分布式抓取
  • 数据持久化采用mongodb
  • 采用基于Netty的AsyncHttpClient代替HttpClient4.5

2018.07.09

  • 知乎网站更新,不再需要authorization验证
  • 完善单测
  • 修复已知bug

2017.11.05

  • 知乎authorization文件更新,修改authorization获取方式。

2017.05.26

  • 修复代理返回错误数据,导致java.lang.reflect.UndeclaredThrowableException异常。

2017.03.30

  • 知乎api变更,关注列表页不能获取到关注人数,导致线程池任务不能持续下去。抓取模式切换成原来ListPageThreadPool和DetailPageThreadPool的方式。

2017.01.17

  • 增加代理序列化。
  • 调整项目结构,大幅度提高爬取速度。不再使用ListPageThreadPool和DetailPageThreadPool的方式。直接下载关注列表页,可以直接获取到用户详细资料。

2017.01.10

  • 不再采用登录抓取,并移除登录抓取相关模块,模拟登录的主要逻辑代码见ModelLogin.java
  • 优化项目结构,加快爬取速度。采用ListPageThreadPool和DetailPageThreadPool两个线程池。ListPageThreadPool负责下载”关注用户“列表页,解析出关注用户,将关注用户的url去重,然后放到DetailPageThreadPool线程池。DetailPageThreadPool负责下载用户详情页面,解析出用户基本信息并入库,获取该用户的"关注用户"的列表页url并放到ListPageThreadPool。

2016.12.26

  • 移除未使用的包,修复ConcurrentModificationException和NoSuchElementException异常问题。
  • 增加游客(免登录)模式抓取。
  • 增加代理抓取模块。

最后

  • 想要爬取其它数据,如问题、答案等,完全可以在此基础上自己定制。
  • 有问题的请提issue。
  • 欢迎贡献代码。
  • 爬虫交流群:633925314,欢迎交流。
  • 需要数据(117w知乎用户基本信息资料)的,关注公众号即可:lwndso

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap