请问大牛,多线程网络爬虫的实现问题

wae_gossip 2011-07-16 07:01:36
本人是这方面的菜鸟,请大家关照哈!
现在我正在修改项目组里面的一个自动化工具,那个自动化工具有windows操作界面。有两个模块:1.网络爬虫 2.EXCEL处理。我们将需要更新的网页的URL存放在EXCEL里面,然后如果网页有更新就写入该EXCEL。现在的问题是:由于Excel里面需要跟踪的网站过多(有两三百个),如果是单线程的话这个工具更新速度主要受到了连接网站的速度的限制。所以我想如果能多个线程同时更新,那就节省了cpu的资源又节省了时间。但是现在的问题是:如果是多线程的话,很有可能多个线程执行一个网页的更新。所以我想问如何做才能避免这个情况。(尽量避免数据库,因为我不是很会哈)。我有个思路:在操作EXCEL时标记一列,用来表示是否已经更新,但是不是很清楚写入EXCEL的时候是实时(即时性)更改EXCEL的数据吗?
万分感谢!线上等待哈!
...全文
132 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shighui 2011-07-17
  • 打赏
  • 举报
回复
多个线程同时去操作同一个EXCEL?可以吗?可以。
但操作完了,你保存得了吗?不可以!这个想法,不太现实!
isjoe 2011-07-17
  • 打赏
  • 举报
回复
excel的多线程控制不是很容易,有可能发生冲突
这样做,在程序开始的时候,你将excel中的网站数据都读取出来,保存在内存中,
同时所有线程从内存中读取需要更新的网站名称。这样冲突问题控制起来就简单了

至于什么时候改写回excel,你可以看情况而定,
绿色夹克衫 2011-07-17
  • 打赏
  • 举报
回复
Excel的话,注册一个ODBC应该可以跑多线程。前段时间刚好做过类似的项目,也就是下载网页然后分析,本来挺简单的一个工作被我弄得比较复杂,对于下网页这类IO操作频繁的应用来说,用异步方式要好于多线程同步。不过需要控制一下WebClient或HttpWebRequest的并发数量,否则内存用High了。
xiaolan314057262 2011-07-16
  • 打赏
  • 举报
回复
多多练习
threenewbee 2011-07-16
  • 打赏
  • 举报
回复
干脆同时跑多个程序算了。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧