苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4371|回复: 1

[反馈建议] 我来优化下这个类的一个地方吧

[复制链接]
发表于 2013-11-4 20:52:34 | 显示全部楼层 |阅读模式
本帖最后由 ReEnter 于 2013-11-4 20:56 编辑

Gzip
  1.   private void SetRequest(HttpItem item)
  2.         {
  3.             // 验证证书
  4.             SetCer(item);
  5.             //设置Header参数
  6.             if (item.Header != null && item.Header.Count > 0) foreach (string key in item.Header.AllKeys)
  7.                 {
  8.                     request.Headers.Add(key, item.Header[key]);
  9.                 }
  10.             // 设置代理
  11.             SetProxy(item);
  12.             if (item.ProtocolVersion != null) request.ProtocolVersion = item.ProtocolVersion;
  13.             request.ServicePoint.Expect100Continue = item.Expect100Continue;
  14.             //请求方式Get或者Post
  15.             request.Method = item.Method;
  16.             request.Timeout = item.Timeout;
  17.             request.KeepAlive = item.KeepAlive;
  18.             request.ReadWriteTimeout = item.ReadWriteTimeout;
  19.            request.Headers["Accept-Encoding"] = "gzip, deflate";
  20.            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
复制代码
这里添加两行
  1. request.Headers["Accept-Encoding"] = "gzip, deflate";
  2.            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
复制代码
      
  1.         //GZIIP处理
  2.                         if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
  3.                         {
  4.                             //开始读取流并设置编码方式
  5.                             new GZipStream(response.GetResponseStream(), CompressionMode.Decompress).CopyTo(_stream, 10240);
  6.                         }
  7.                         else
  8.                         {
  9.                             //开始读取流并设置编码方式
  10.                             response.GetResponseStream().CopyTo(_stream, 10240);
  11.                         }
复制代码
改为
  1. response.GetResponseStream().CopyTo(_stream, 10240);
复制代码
因为微软自动解压了。所以不需要手工判断了。gzip后。采集性能明显提高,而且,不需手工添加Httpitem里的Head头了





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-11-4 22:44:47 | 显示全部楼层
copyto方法在net2.0里没有吧.,你这是改的那个版本的
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-23 14:54

© 2014-2021

快速回复 返回顶部 返回列表