近段时间想自己做个多线程的抓取程序
经过研究抓取问题已经解决,现在想实现多个任务同时抓取,主要是为了提高抓取效率。
本人对C#多线程没有怎么接触过,所以还请各位指点。
具体实现结果:
1、任务列表里有多个任务(如:xxx.com/0001.html,xxx.com/9999.html)
2、要求同时创建多个线程(如:5个),每个线程抓取一个网页地址,如下对应关系:
Thread1 -- xxx.com/0001.html
Thread2 -- xxx.com/0002.html
Thread3 -- xxx.com/0003.html
Thread4 -- xxx.com/0004.html
Thread5 -- xxx.com/0005.html
当线程1-5中某个线程抓取完毕,自动创建一个新的线程对应地址 xxx.com/0006.html
可能涉及到的问题:获取活动线程数,获取状态为未抓取的临近目录
类似迅雷多任务下载的效果。
希望各位能够帮忙解答一下,
如能给出类似代码最佳,否则给出相应资料也可。
感激不尽
你可以考虑采用线程池来管理多线程。
参见下面资料
http://msdn.microsoft.com/zh-cn/library/3dasc8as(VS.80).aspx
我知道你要是做下载时,IE是有限制的,最多只能同时下载两个,如果安装过一些下载软件的话如迅雷,是可以最多10个的,服务器上安装下载软件是不太现实的,所以,你可以通过更改注册表来解决IE下载支持的最大数。
你可以new 出一个Thread,然后做抓取,你遇到的问题在哪儿?