Skip to content

Grois/JueJinSpider

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

JueJinSpider

主要是用来爬取掘金用户信息爬虫

主要从用户关系入手,首先选取一个粉丝数量较大的用户作为起点,然后开启爬取其关注的用户和他的粉丝。

这里选了一个粉丝数量较多的用户:

起始用户

可以看到有1w多的粉丝量。这里说一下为什么要选一个数量大的用户:这里选一个用户就是选一个起点,然后根据粉丝关系向广度和深度延伸,能延伸到多大的范围理论上来说是 跟起始用户的选择有很大关系的。粉丝量或者关注的人越多,能延伸到的用户就越多。所以尽可能选择一个数量较大的用户。

然后开始分析粉丝信息,关注的人和粉丝分析方法是一样的,找到其中一个方法就能很快解决另一个。

我们简单分析一下就可以知道,在用户个人信息页面有一个关注者,点击之后就能看到粉丝列表。

粉丝列表

然后分析网络请求,发现是这样的:

网络请求

其中的 currentUid 可以不要,所以这个请求就只有一个动态的参数,那就是当前用户的id,当前用户的id很容易得到。

然后我们可以看到究竟返回了哪些信息

详细信息

继续往下翻可以发现,第一次的请求是通过点击 关注者 按钮发送的,后边更多的粉丝信息是通过 ajax 查询的。但是通过ajax发送的请求和第一次不同。

ajax请求

可以看到 ajax的请求都多了一个before参数,这个参数从哪里来呢? 如果仔细分析了前边返回的json信息就会发现,每个用户都有一个 updatedAtString 字段,而下一次的请求都和上一次有关,下一次请求的 before 的值

分析到这里就很明显了,一共分为以下几步:

  • 先选取一个粉丝量较大的用户。
  • 先发起第一次请求,获取前20位粉丝。
  • 记住最后一位粉丝的 updatedAtString 字段,进行下一次请求。
  • 如此循环

同理可以处理关注的人。

缺点

  • 首选不能获取到那些没有关注的人、也没有粉丝的人。这些人触及不到,不可达。
  • 其次即使有些人有关注也有粉丝,也有可能获取不到,但是最初选取的人粉丝量越大理论上来说,能够触及的用户越多。

本项目为练习爬虫的项目,思路借鉴了爬取知乎的一个案例,也是从粉丝关系入手,借鉴了前辈的思路,非常感谢。

About

掘金用户信息爬虫

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published