程序只需要抓取固定的网页,一共有5个吧!比如:http://www.163.com/news_list.html
      http://www.sina.com/news_list.html
      http://www.sohu.com/news_list.html
      http://www.tom.com/news_list.html
      http://www.21cn.com/news_list.html程序要定时抓取,每个网址就可以算作任务了。任务属性很多(抓取开始时间,结束时间,间隔时间,内容过滤,==)开始是这么想的,一共开启5个线程,在加5个定时器做间隔检测!这些线程循环着执行!后来看了些资料,对线程有点了解了。又想出一个方案。是这样的!开启一个线程,监视!对!就是这个定时器:(new System.Timers.Timer()),在做个任务列表,在加个队列,把满足抓取条件的任务放进队列里来(比如:间隔时间到了,。),定时器每隔1秒检查一次队列,有任务,就抓!我感觉这样的挺灵活,是不是做起来复杂度要大些!大家讨论一下,我也顺便吸取一下,前辈们的知识!

解决方案 »

  1.   

    感觉这样做,有个问题!比如有个任务堵塞在那里了。那就卡到那了,别的任务就不能正常执行了!因为主线程就一个new System.Timers.Timer();不知道说的对不!
      

  2.   

    我也做过抓去网页的程序.我说说我的吧1.我是同时抓的,因此没任务列表的说法.2.我也是多线程的,不过我没用Timer,感觉挺麻烦的,就只用Thread.Sleep();来控制间隔时间.3.各线程不会互相干扰,不会因为某个线程出问题,其他就不能运行.
      

  3.   

    就5个?多少层?
    单单5个,怎么弄都可以,有没有什么时间严格要求的一般这些新闻网页有rss吧?
      

  4.   

    我也在做一个BAIDU空间的爬虫,让BAIDU空间都留下我的足迹
      

  5.   

    不用定时器,sleep一下就可以。数据库中有URL的状态,比如说,取全0的,从队列中取出最上面的,状态置1.爬完置2!
    最近正在做!~~~
    呵呵
      

  6.   

    间隔时间是通过,程序计算出来的,每个任务的间隔时间都不一样,都是以他们每天的开始时间为基础计算出来的!sleep好像不太行!
      

  7.   

    当然不一样
    微观上是顺序开启线程,再说爬取的东西不一样,怎么可能一样呢 ?sleep我试过了,可以
    爬完了让线程休息下,继续干活