与Python URLOpen相比,VB.Net HTTPWebRequest速度较慢

与Python URLOpen相比,VB.Net HTTPWebRequest速度较慢,python,vb.net,http,comparison,Python,Vb.net,Http,Comparison,嗨,我正在编写一个网络爬虫,它将抓取网站并有选择地解析网站的不同部分 我是一名.Net开发人员,所以我的选择显然是在.Net中进行的,但是速度非常慢,包括下载和解析HTMLPage 然后我尝试先使用.Net下载内容,然后使用python下载相同的域,但python在下载数据方面给人留下了深刻的印象。我已经使用python实现了下载,但是后面的部分用python编写代码并不是那么容易,这显然是我不想做的 在Python中花费100秒的同一批域 在基于.Net的爬虫程序中花了20分钟 我试着下载,P

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

我是一名.Net开发人员,所以我的选择显然是在.Net中进行的,但是速度非常慢,包括下载和解析HTMLPage

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

在Python中花费100秒的同一批域 在基于.Net的爬虫程序中花了20分钟

我试着下载,Python用了8秒,而.NETCrawler用了100秒


有人知道为什么.Net中的速度慢,而python中的速度快吗

HttpWebRequest一次只能有2个连接,因此如果您正在下载内容以及html(如图像、样式表、js等),或者您正在使用多个线程,那么您将达到连接限制

您需要更改ServicePointManager中的设置

这个链接解释了你需要做什么。

您可能还希望在进行设置时设置这些设置

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>


是否愿意分享您如何实现
HttpWebRequest
的代码示例?我不确定,但python脚本似乎正在使用http压缩。很抱歉,我无法发布代码。您知道的一些公司策略:)从本次讨论中,我想知道是否有一些编译器开销会降低http通信速度,或者是否有一些设置是我需要的可以使套接字缓冲区或连接超时或DNS解析设置超时等增加。@shiv kumar感谢您的响应这确实有帮助,但输出中有很多不同。我已编辑了答案,将配置文件设置作为设置ServicePointManager属性的备选方案。@Regretches,您是否调用Close()关于你的回答?如果不这样做,将保持连接打开。还要查看将KeepAlive设置为false是否有帮助。在你的情况下,你不需要它,因为你正在转移到其他网站。myHttpWebRequest1.KeepAlive=false;我所说的输出是指两个爬虫所花费的时间