日期:2014-05-18  浏览次数:20838 次

请问大牛,多线程网络爬虫的实现问题
本人是这方面的菜鸟,请大家关照哈!
  现在我正在修改项目组里面的一个自动化工具,那个自动化工具有windows操作界面。有两个模块:1.网络爬虫 2.EXCEL处理。我们将需要更新的网页的URL存放在EXCEL里面,然后如果网页有更新就写入该EXCEL。现在的问题是:由于Excel里面需要跟踪的网站过多(有两三百个),如果是单线程的话这个工具更新速度主要受到了连接网站的速度的限制。所以我想如果能多个线程同时更新,那就节省了cpu的资源又节省了时间。但是现在的问题是:如果是多线程的话,很有可能多个线程执行一个网页的更新。所以我想问如何做才能避免这个情况。(尽量避免数据库,因为我不是很会哈)。我有个思路:在操作EXCEL时标记一列,用来表示是否已经更新,但是不是很清楚写入EXCEL的时候是实时(即时性)更改EXCEL的数据吗?
  万分感谢!线上等待哈!

------解决方案--------------------
Excel的话,注册一个ODBC应该可以跑多线程。前段时间刚好做过类似的项目,也就是下载网页然后分析,本来挺简单的一个工作被我弄得比较复杂,对于下网页这类IO操作频繁的应用来说,用异步方式要好于多线程同步。不过需要控制一下WebClient或HttpWebRequest的并发数量,否则内存用High了。