首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与VB.Net HTTPWebRequest相比,Python URLOpen的速度很慢

与VB.Net HTTPWebRequest相比,Python URLOpen的速度很慢
EN

Stack Overflow用户
提问于 2011-02-12 14:21:22
回答 1查看 1.4K关注 0票数 0

嗨,我正在编写一个网络爬虫,这将爬行网站,并有选择地解析网站的不同部分。

我是一个.Net开发人员,所以我选择用.Net做这件事是显而易见的,但是速度非常慢,包括下载和解析HTMLPages

然后,我尝试先使用.Net下载内容,然后使用python下载相同的域名,但python在下载数据方面给人留下了深刻的印象。我已经使用python实现了下载,但是后面的部分并不容易用python编写,这显然不是我想要做的。

同一批域名在Python中需要100秒,而在基于.Net爬虫中需要20分钟

我尝试下载http://www.eqlit.com/,在Python语言中用了8秒,在.Net crawler中用了100秒

有人知道为什么这在.Net中很慢,但在python中却很快吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

您可能还想在设置时设置这些设置。

代码语言:javascript
复制
ServicePointManager.UseNagleAlgorithm = true;
ServicePointManager.Expect100Continue = true;
ServicePointManager.CheckCertificateRevocationList = true;
ServicePointManager.DefaultConnectionLimit = 10; // for example

另一种方法是使用应用程序的配置文件,并使用以下方法

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <connectionManagement>
      <add address="*" maxconnection="10"/>
    </connectionManagement>
  </system.net>
</configuration>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4976678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档