【零基础学爬虫】scrapy实战:爬取知乎【所有用户】信息

优采云 发布时间: 2022-06-18 05:55

  【零基础学爬虫】scrapy实战:爬取知乎【所有用户】信息

  简介

  知乎用户信息是非常大的,本文是一个scrapy实战:怎样抓取所有知乎用户信息。

  爬取的思路如下图所示:

  

  站点分析

  本文以轮子哥为根节点(根节点可以随便选择),打开轮子哥的关注列表,并翻页查看关注列表:

  

  翻页是一个AJAX请求,每页20个关注用户,并且有一些简要的用户信息

  其中有一个是url-token,它是用来标识一个用户的,在上面截图中那个用户的主页url为:

  其中就有url-token

  项目实战

  创建项目

  

  思路分析

  获取用户信息

  首先需要获取用户的基本信息,这个基本信息可以通过请求类似下面的url获得:

  {url_token}/following

  而url_token可以在用户的关注列表中获取,上面url的页面类似于这个

  

  另外,还有右侧获得赞同、被收藏、感谢的次数

  从上述url获取用户基本信息后,接下来就是获取当前用户的关注列表:

  获取用户的关注列表

  这个列表存在翻页,经过分析得知关注列表的翻页是通过AJAX请求实现的,获取某页关注列表url如下所示:

  %5B%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%ics&offset=0&limit=20

  提取一下规律:

  {url-token}/followees?include={include}&offset={offset}&limit=2{limit}

  其中include为:

  data[*].answer_count,articles_count,gender,follower_count,is_followed,is_following,badge[?(type=best_answerer)].topics

  上面url返回时一个json,该json中包含了20个关注者,response数据如下图所示:

  对于一个关注者,我们只需要获取该用户的url-token,通过url-token即可拼接出该用户的主页,也就可以获得该用户的基本信息,以及关注者列表等。

  获取到url-token后,我们需要判断有没有下一页,如果有则进行翻页,在上图的后半部分还有一个字段:

  翻到当前的最后一页,该字段如下图所示:

  因此依据is_end字段就可以判断是否下一页关注者了,使用next字段的值即可获取下一页关注者的列表了。

  思路整理

  所以呢?在解析用户基本信息的同时,我们可以拿到用户的url_token,进一步我们也就可以拿到该用户的关注者列表,如此递爬取,基本可获得所有知乎用户的所有基本信息。

  

  本次的pipline设置为:

  

  源码和爬取的部分数据:

  爬取的部分知乎用户数据

  

  源码

  爬取知乎用户的思路已经在文章介绍了,思路理好后,实现比较块。

  主要是源码有点长,这里就不全贴出来了。需要源码的同学可以通过文末方式获取

  扫描下方二维码,公众号菜鸟名企梦后台发送关键词“知乎”即可获取本文的完整源码和详细程序注释

  长按下面二维码,

  发送“知乎”即可获取完整源码

  热 文推 荐

  公众号后台发送“爬虫”,即可获取“零基础学爬虫专栏”系列文章

  公众号后台回复“目录”:即可获取小编熬夜编排整理好的历史文章:

  目录截图如下(可上下滑动):

  

  

  喜欢就点「在看」吧 !

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线