首先声明爬取的数据并不是为了盈利,也不会做商业用途,只是为了科研用途,在科研结束之后会销毁。数据在此期间将全程保存在我的电脑上,我的电脑在此期间一直位于中国大陆。
我想去爬取一个网站的用户的 [用户名,ip 属地,粉丝,关注] 。不需要任何其他的东西。其中为了保护隐私(以防止数据泄露),所有用户的用户名和 IP 属地都将用对应的哈希值代替(科研不需要具体的用户名和 IP 属地的具体名字)。(哈希发生碰撞的概率应该比较低吧。。。)
现在问题来了,我该怎么遍历整个网站呢? 比如我访问第一个用户的页面,记录下用户名和 IP ,然后访问这个用户的关注 /粉丝页面,记录下他关注的用户 /粉丝。 下一步我预计会访问这个用户的第一个粉丝,然后用同样的方法访问该粉丝的关注和粉丝。。。
第一个问题是:这样该如何保证我能爬完所有用户并尽可能没有重复访问呢?
第二个问题不解决也可以:我该用什么样的数据结构来记录这些数据呢?每个用户一个字典似乎太奢侈了?
我不是专业的写代码的……所以大家别笑话我哈…… 当然如果笑话我能让大家获得开心的话,也可以笑话我哈!
1
dreasky 2023-04-11 17:01:37 +08:00
爬虫需要两个队列<待爬取 url 队列> A 和<已经爬取的 url 集合>B
爬虫入口提取可能跳转的 url 加入 A 队尾 ,爬取线程从 A 队头取 url 和 B 比对是否已经爬取过,爬取成功后的 url 写入 B B 可以用 Redis A 中 url 是根据爬取逻辑提取 非 SPA 页面可以粗暴提取页面内所有 a 标签 href |