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

网上那些爬虫框架都是怎么个爬取逻辑?比如爬一下 V 站的所有主题

  •  
  •   c4f36e5766583218 · 2019-06-11 22:50:59 +08:00 · 1413 次点击
    这是一个创建于 1990 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现状 /前提 /假设

    1. V 站没有任何一个页面 /接口以不变的排序(分页)展示了所有主题的列表
    2. 主题页面要么 200,要么 404 了( 404 包括被禁的以及未创建的)
    3. 主题页面的链接是规则的(数值递增)

    我先来,不使用爬虫框架,伪逻辑如下

    while(true){
        if (first) {
            // 比如开 100 个线程获取 1-100 的主题,https://www.v2ex.com/t/1 到 https://www.v2ex.com/t/100
        } else {
            // part 1
            // 对 404 的主题做重试,因为万一程序跑太快了或者 V 站停更 1 个月就会出现 200 的帖子被错误记录为 404
            // 比如对 404 的主题重试个 5 天,5 天后还是 404 就大概率是 404 了
            // 当然 part1 的逻辑不是最严谨的,还是可能出错
    
            // part2
            // 视情况是否获取下 100 条主题。(比如上 100 条都是 404 可能就是程序跑太快了)
        }
        // 等待 100 线程结束
        // 视情况限制循环的间隔时间
    }
    

    一遍下来存的主题 ID 连续的,不会有跳跃 /间断

    使用爬虫框架

    因为既然是框架么,肯定是具有通用性的,那一般都有哪些爬取逻辑?

    还是我印象记得 /错误理解 /胡说八道:

    1. 直接从 https://www.v2ex.com 主站进入
    2. 在页面找到 V 站链接
      • 如果是形如 /t/100 的链接,记录到数据
      • 其它 V 站链接,进入第二步

    反正就说下:

    • 不使用爬虫框架,你会选什么好的爬取逻辑
    • or 使用爬虫框架(哪个)以及它的爬取逻辑(/会爬到哪些链接)
    c4f36e5766583218
        1
    c4f36e5766583218  
    OP
       2019-06-11 23:02:27 +08:00
    我真的没有想爬 V 站,只是技术交流,举例而已。不要被 ban...
    c4f36e5766583218
        2
    c4f36e5766583218  
    OP
       2019-06-12 08:13:39 +08:00
    @Livid 被 ban 了?为什么这主题没出现在 https://www.v2ex.com/go/qna 列表中?诡异。。
    c4f36e5766583218
        3
    c4f36e5766583218  
    OP
       2019-06-12 13:47:28 +08:00
    我被降权了? test
    hentaisan
        4
    hentaisan  
       2019-06-12 21:04:45 +08:00
    @c4f36e5766583218 #3 没事,你或在 RSS 里面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5869 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:06 · PVG 10:06 · LAX 18:06 · JFK 21:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.