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

爬虫里面需要把列表页和详情页分成不同的线程吗?

  •  
  •   yakczh · 2015-05-12 09:02:30 +08:00 · 2478 次点击
    这是一个创建于 3487 天前的主题,其中的信息可能已经有所发展或是发生改变。

    列表和详情页虽然都是url对应的页面,但是里面的逻辑和流程都不相同,列表需要经常去刷新更新,而且列表页是解析出一堆url,又要重新加到url队列里面, 详情一般是采集数据,采集完了,基本流程就结束了 如果都写一个线程里,感觉流程和逻辑有点复杂,拆成两个线程,各干各的,是不是会好维护些?

    5 条回复    2015-05-12 12:56:20 +08:00
    yangyanggnu
        1
    yangyanggnu  
       2015-05-12 09:20:51 +08:00
    从维护角度来看,通常我会将列表页面和详情页面定义成两个类。效率上,我通常将相同类的各个对象分为多线程管理(如,多线程多个详情页面类对象)。
    sohoer
        2
    sohoer  
       2015-05-12 09:37:22 +08:00
    对于通用型设计,流程肯定是一样的,都是抓取数据、保存数据、发布数据
    flight2006
        3
    flight2006  
       2015-05-12 12:00:34 +08:00
    明显拆开会好点,不仅维护修改起来逻辑更清楚,而且一般详情里面花费时间比较多,一个线程执行解析Url加入队列后,可以开多个线程执行详情采集,效率更高
    ultimate010
        4
    ultimate010  
       2015-05-12 12:17:35 +08:00 via iPhone
    丢任务队列解决。
    yakczh
        5
    yakczh  
    OP
       2015-05-12 12:56:20 +08:00
    @ultimate010 任务队列出取出来一个要解析的页面,你也要去 if else 去判断根据页面去判断到底调用哪个类去解析页面,解析完了以后后续的处理动作, 如果一个类能解析所有的页面,这个类肯定复杂无比
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5449 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:30 · PVG 15:30 · LAX 23:30 · JFK 02:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.