none
C#多线程抓取网页 RRS feed

  • 问题

  • URl:http://www.qiushibaike.com/8hr/page/4 
    我要用c# 多线程去下载 
    构造Url即为http://www.qiushibaike.com/8hr/page/{0}-9999 
    现在的程序是单线程,下载速度很慢。 
    尝试使用多线程,采用的线程数组的方式,但是运行结果同单线程下载差不多。 
    求问某些网站采集器设置多线程数量的那种抓取 下载速度为为啥那么快。。求代码
    2013年8月19日 3:11

答案

  • 假设你编写了正确的多线程下载程序,那么至少有两种下载机制:

    一种是最简单的,每个线程负责一个文件,即有两个线程,那么它们可以同时分别下载下面两个文件:

    http://www.qiushibaike.com/8hr/page/1http://www.qiushibaike.com/8hr/page/2

    另一种是多个线程同时下载一个文件,即有两个线程,那么它们可以同时下载下面文件的不同部分:

    http://www.qiushibaike.com/8hr/page/1  http header Range 0 - 200000

    http://www.qiushibaike.com/8hr/page/1  http header Range 200000 - 400000

    当然,后者需要 web 服务器的支持。

    但是,不管那种方式,下载速度都受到网络带宽的限制,包括你的出口带宽和网站的接入带宽。除此以外,针对同一个域名的HTTP连接数,通常会被限制在 2- 6 个,这个限制除了服务器会有,客户端也会采用,比如 Winnet SDK。

    2013年8月19日 3:34
  • 可以给个例子么?

    Thread[] download;
       
    void Test() {
            download
    = new Thread[5];
           
    for (int i = 0; i < download.Length; i++)
           
    {
                download
    [i] = new Thread(DownLoad); download[i].Start();
           
    }
       
    }
    2013年8月19日 6:42

全部回复