zhihu_spider

此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo,下载这些数据感觉也没什么用,就当为大家学习scrapy提供一个例子吧。代码地址:https://github.com/LiuRoy/zhihu_spider,欢迎各位大神指出问题,另外知乎也欢迎大家关注哈 ^_^.

流程图

  • 解析的用户信息包括昵称,头像链接,个人基本信息还有关注人的数量和粉丝的数量。这个页面还能获取关注人页面和粉丝页面。
  • 由上一步获取的分页列表页面和关注人页面获取用户人际关系,这两个页面类似,唯一麻烦的是得到的静态页面最多只有二十个,获取全部的人员必须通过POST请求,解析到的个人主页再由上一步来解析。

代码解释

scrapy文档非常详细,在此我就不详细讲解,你所能碰到的任何疑问都可以在文档中找到解答。

  • 爬虫框架从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单纯解析用户列表,提交用户主页请求至引擎。

效果图

最新文章

  1. 动画黄金搭档:CADisplayLink & CAShapeLayer
  2. jQuery事件流的顺序
  3. 洛谷P1203 [USACO1.1]坏掉的项链Broken Necklace
  4. hdu----(5050)Divided Land(二进制求最大公约数)
  5. 自定义实现InputFormat、OutputFormat、输出到多个文件目录中去、hadoop1.x api写单词计数的例子、运行时接收命令行参数,代码例子
  6. vmware 8下ubuntu 13.04安装vmware tools
  7. Geodatabase - 打开栅格数据
  8. hdu1258Sum It Up (DFS)
  9. Dos命令之Netsh
  10. Oracle经常使用函数
  11. Gulp和webpack的区别,是一种工具吗?
  12. 为Qt视图中的文字添加彩虹渐变效果
  13. redis编译 报告错误 jemalloc/jemalloc.h:没有那个文件或目录 解决.
  14. 软件151 王楚博 maven的导入
  15. Numpy与Matplotlib
  16. 【.NET】SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间
  17. 【bzoj2038】小Z的袜子
  18. Mysql导入大容量SQL文件数据问题
  19. 稳定模式在RESTful架构中的应用
  20. Couchbase 集群小实践

热门文章

  1. 【.net 深呼吸】细说CodeDom(1):结构大观
  2. 最新 去掉 Chrome 新标签页的8个缩略图
  3. 页面中多个script块之间的关系
  4. kafka学习笔记:知识点整理
  5. 解决vs创建或打开C++浏览数据库文件*.sdf时发生错误的问题
  6. java设计模式之--单例模式
  7. Struts2入门(六)——国际化
  8. android Notification介绍
  9. Linux环境变量设置
  10. 转: 如何高效利用GitHub