V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yanyuechuixue
V2EX  ›  问与答

兄弟们,我想咨询一个爬虫的问题,该怎么遍历网站

  •  
  •   yanyuechuixue · 2023-04-11 16:26:45 +08:00 · 577 次点击
    这是一个创建于 584 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先声明爬取的数据并不是为了盈利,也不会做商业用途,只是为了科研用途,在科研结束之后会销毁。数据在此期间将全程保存在我的电脑上,我的电脑在此期间一直位于中国大陆。

    我想去爬取一个网站的用户的 [用户名,ip 属地,粉丝,关注] 。不需要任何其他的东西。其中为了保护隐私(以防止数据泄露),所有用户的用户名和 IP 属地都将用对应的哈希值代替(科研不需要具体的用户名和 IP 属地的具体名字)。(哈希发生碰撞的概率应该比较低吧。。。)

    现在问题来了,我该怎么遍历整个网站呢? 比如我访问第一个用户的页面,记录下用户名和 IP ,然后访问这个用户的关注 /粉丝页面,记录下他关注的用户 /粉丝。 下一步我预计会访问这个用户的第一个粉丝,然后用同样的方法访问该粉丝的关注和粉丝。。。

    • 第一个问题是:这样该如何保证我能爬完所有用户并尽可能没有重复访问呢?

    • 第二个问题不解决也可以:我该用什么样的数据结构来记录这些数据呢?每个用户一个字典似乎太奢侈了?

    我不是专业的写代码的……所以大家别笑话我哈…… 当然如果笑话我能让大家获得开心的话,也可以笑话我哈!

    dreasky
        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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2896 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 03:13 · PVG 11:13 · LAX 19:13 · JFK 22:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.