yakczh
V2EX  ›  问与答

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

  •  
  •   yakczh · May 12, 2015 · 2844 views
    This topic created in 4050 days ago, the information mentioned may be changed or developed.

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

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