积极答复者
C#多线程抓取网页

问题
-
URl:http://www.qiushibaike.com/8hr/page/4
我要用c# 多线程去下载
构造Url即为http://www.qiushibaike.com/8hr/page/{0}-9999
现在的程序是单线程,下载速度很慢。
尝试使用多线程,采用的线程数组的方式,但是运行结果同单线程下载差不多。
求问某些网站采集器设置多线程数量的那种抓取 下载速度为为啥那么快。。求代码
答案
-
假设你编写了正确的多线程下载程序,那么至少有两种下载机制:
一种是最简单的,每个线程负责一个文件,即有两个线程,那么它们可以同时分别下载下面两个文件:
http://www.qiushibaike.com/8hr/page/1 和 http://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。
- 已标记为答案 Barry WangModerator 2013年8月27日 5:52
-
可以给个例子么?
Thread[] download;
void Test() {
download = new Thread[5];
for (int i = 0; i < download.Length; i++)
{
download[i] = new Thread(DownLoad); download[i].Start();
}
}- 已标记为答案 Barry WangModerator 2013年8月27日 5:52
全部回复
-
可以给出你的代码吗?
If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer
Help by clicking:
Click here to donate your rice to the poor
Click to Donate
Click to feed Dogs & Cats
Found any spamming-senders? Please report at: Spam Report -
假设你编写了正确的多线程下载程序,那么至少有两种下载机制:
一种是最简单的,每个线程负责一个文件,即有两个线程,那么它们可以同时分别下载下面两个文件:
http://www.qiushibaike.com/8hr/page/1 和 http://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。
- 已标记为答案 Barry WangModerator 2013年8月27日 5:52
-
可以给个例子么?
Thread[] download;
void Test() {
download = new Thread[5];
for (int i = 0; i < download.Length; i++)
{
download[i] = new Thread(DownLoad); download[i].Start();
}
}- 已标记为答案 Barry WangModerator 2013年8月27日 5:52