Python爬虫抓取知乎所有用户信息

專 欄

蜗牛仔,Python中文社区专栏作者,怒学Python爬虫,争当爬虫工程师,

github地址:

https://github.com/xiaobeibei26

今天用递归写了个抓取知乎所有用户信息的爬虫,源代码放在了github上,有兴趣的同学可以上去下载一下看看,这里介绍一下代码逻辑以及分页分析,首先看网页,这里本人随便选了一个大V作为入口,然后点开他的关注列表,如图

注意,本人爬虫的全称都是处于非登录状态的。这里的粉丝列表以及关注者列表都是后台ajax请求得到的数据(没有听过ajax的童鞋别慌,ajax请求跟普通浏览器的请求没有区别,它主要就是在我们 浏览网页时候偷偷给服务器发送的请求,就是为了节省流量以及减少请求数,不然每次看点新数据都全部刷新网页,服务器压力很大的,所以有了这玩意),然后我们找到粉丝列表以及关注者列表的URL,这个很简单,在chrome浏览器下面点击一下页数切换就可以找到,如图

找到关注者以及粉丝的URL就好办理,下面看一看这些数据,这里以粉丝的数据举例,如图,是一段json

这里找到了粉丝的数据,不过这里不是用户的详细信息,只有部分数据,不过他提供了一个token_url,我们就可以获取这个ID访问用户的详细信息了,我们看看每个用户的详细信息怎么提取。这里楼主发现,在观看粉丝或者关注列表的时候,网页是会自动触发该用户详细信息的请求,如图

这次获得的是用户详细信息查询的URL,这里看一看这个详细信息的URL,如图

上面介绍了网页的基础分析,下面说一下代码的思路,这次爬虫用到了递归,本次用的scrapy抓取以及mogodb数据库存储的。 首先本人是用了一个大V作为爬虫第一个网页,然后分三步,第一步是爬了该大V的详细信息然后存入数据库,第二步是爬取了该大V的粉丝,第三是爬取了该大V 的关注者(其实就是爬取粉丝或者关注者的token_url),完成之后,利用爬取的粉丝以及关注者的数据构造他们每个人详细信息的url,然后挖取详细 信息存入数据库。到这里递归第一步算是完成了,然后爬虫会从每一个粉丝和关注者入手,分别爬取他们的粉丝以及关注者的详细数据,不断递归 在代码里面还有加入了一些自动翻页的功能,有兴趣可以看看。下面是我们item里面定义要抓取的数据:

import scrapyclass ZhihuUserItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    answer_count = scrapy.Field()    #回答数量
    articles_count = scrapy.Field()    #写过的文章数
    follower_count = scrapy.Field()    #粉丝数量
    following_count = scrapy.Field()    #关注了多少人
    educations=scrapy.Field()    #教育背景
    description = scrapy.Field()    #个人描述
    locations = scrapy.Field()    #所在地
    url_token =scrapy.Field()    #知乎给予的每个人用户主页唯一的ID
    name=scrapy.Field()    #用户昵称
    employments = scrapy.Field()    #工作信息
    business=scrapy.Field()    #一些工作或者商业信息的合集
    user_type =scrapy.Field()    #用户类型,可以是个人,也可以是团体等等
    headline =scrapy.Field()    #个人主页的标签
    voteup_count = scrapy.Field()    #获得的赞数
    thanked_count=scrapy.Field()    #获得的感谢数
    favorited_count = scrapy.Field()    #被收藏次数
    avatar_url = scrapy.Field()    #头像URl

代码一共不足80行,运行了一分钟就抓了知乎一千多个用户的信息,这里上张结果图

最近忙完别的事了,终于可以天天写爬虫了,不知道大家这篇有什么问题不,可以随便向我提 最后提一提,爬取一定要伪装好headers,里面有些东西服务器每次都会检查。

本文Github地址:

https://github.com/xiaobeibei26/zhihu_user_spider

原文发布于微信公众号 - Python中文社区(python-china)

原文发表时间:2017-04-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

WordPress4.2升级修复补丁:解决大量404请求以及评论表情路径及尺寸异常问题

上一篇文章写到了 WordPress 升级 4.2 版本后部分主题出现了大量 404 请求的问题,匆忙解决也没深究原因。今天继续调试主题却发现了评论表情不显示了...

46413
来自专栏阮一峰的网络日志

Usenet:P2P下载的替代方法

在上一篇网志中,我已经说了,我打算好好研究和介绍usenet。 下面就是我翻译的第一篇教程。它的信息量很大,非常通俗实用。基本上,读完这篇文章,你就会使用use...

4038
来自专栏极客猴

爬虫实战二:爬取电影天堂的最新电影

前面两篇文章介绍 requests 和 xpath 的用法。我们推崇学以致用,所以本文讲解利用这两个工具进行实战。

1392
来自专栏轮子工厂

有哪些实用且堪称神器的Chrome插件?吐血推荐!!!

相信很多人都在使用 Chrome 浏览器,其流畅的浏览体验得到了不少用户的偏爱,但流畅只是一方面, Chrome 最大的优势还是其支持众多强大好用的扩展程序(E...

3.2K4
来自专栏Python中文社区

雪球网沪深全站股票评论爬虫

專 欄 ❈ 蜗牛仔,Python中文社区专栏作者,怒学Python爬虫,争当爬虫工程师, github地址: https://github.com/xiaob...

7006
来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(二十一):讲师相关页面配置

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

1822
来自专栏IT大咖说

自动化测试的理想境界:AppCrawler自动遍历工具

内容来源:2017 年 6 月 24 日,TesterHome联合创始人黄延胜在“Testwo第一届测试分享沙龙”进行《App crawler自动遍历工具》演讲...

5733
来自专栏iOS技术

设计一个简单的 iOS 架构前言一、关于组件化二、模块化思维划分文件三、减少全局宏的使用四、去基类化设计五、MVC?MVP?MVVM?VIPER?结语

正如“100个读者就有100个哈姆雷特”一样,对于架构的理解不同的软件工程师有不同的看法。架构设计往往是一个权衡的过程,每一个架构设计者都要考虑到各个因素,比如...

1573
来自专栏北京马哥教育

让弹幕文明一点的Python屏蔽功能小实验

突然想到一个视频里面弹幕被和谐的一满屏的*号觉得很有趣,然后就想用python来试试写写看,结果还真玩出了点效果,思路是首先你得有一个脏话存放的仓库好到时候检测...

3115
来自专栏阮一峰的网络日志

Google短网址的API

除了速度快,goo.gl还提供详细的点击统计。比如,Yahoo首页的短网址是http://goo.gl/QuXj,那么它的统计数据就在http://goo.gl...

1K2

扫码关注云+社区

领取腾讯云代金券