嗨,我正在编写一个网络爬虫,这将爬行网站,并有选择地解析网站的不同部分。
我是一个.Net开发人员,所以我选择用.Net做这件事是显而易见的,但是速度非常慢,包括下载和解析HTMLPages
然后,我尝试先使用.Net下载内容,然后使用python下载相同的域名,但python在下载数据方面给人留下了深刻的印象。我已经使用python实现了下载,但是后面的部分并不容易用python编写,这显然不是我想要做的。
同一批域名在Python中需要100秒,而在基于.Net爬虫中需要20分钟
我尝试下载http://www.eqlit.com/,在Python语言中用了8秒,在.Net crawler中用了100秒
有人知道为什么这在.Net中很慢,但在python中却很快吗?
发布于 2011-02-12 14:52:26
HttpWebRequest一次只能有2个连接,所以如果你同时下载内容(如图片、样式表、js等)。或者你正在使用多个线程,那么你将达到连接限制。
您需要更改ServicePointManager中的设置。
http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit.aspx
此链接解释了您需要执行的操作。http://blogs.msdn.com/b/jpsanders/archive/2009/05/20/understanding-maxservicepointidletime-and-defaultconnectionlimit.aspx
您可能还想在设置时设置这些设置。
ServicePointManager.UseNagleAlgorithm = true;
ServicePointManager.Expect100Continue = true;
ServicePointManager.CheckCertificateRevocationList = true;
ServicePointManager.DefaultConnectionLimit = 10; // for example另一种方法是使用应用程序的配置文件,并使用以下方法
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<connectionManagement>
<add address="*" maxconnection="10"/>
</connectionManagement>
</system.net>
</configuration>https://stackoverflow.com/questions/4976678
复制相似问题