http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 3661|回复: 3

[反馈建议] HttpHelperV1.8的一点小疑问

[复制链接]
发表于 2017-6-8 20:05:29 | 显示全部楼层 |阅读模式
大大好!
基于最新的HttpHelperV1.8, 个人有点小疑问

1. 当我们用HttpHelper下载文件的时候,
会把ResultType设置成ResultType.Byte,
当加载完成后,我们会把result.ResultByte 保存成本地文件。

但根据当前代码,HttpHelper设置好result.ResultByte以后,
仍然会继续设置result.Html = encoding.GetString(ResponseByte);
但其实这个Html已经没有太大的意义了,因为返回内容是文件流。
如果文件流很大,经测试,这条语句还是蛮消耗资源的哦

[C#] 纯文本查看 复制代码
            #region Html
            if (ResponseByte != null && ResponseByte.Length > 0)
            {
                //设置编码
                SetEncoding(item, result, ResponseByte);
                //得到返回的HTML
                result.Html = encoding.GetString(ResponseByte);
            }
            else
            {
                //没有返回任何Html代码
                result.Html = string.Empty;
            }
            #endregion


所以,我斗胆以为,在文件下载的时候(ResultType.Byte)
不需要再设置result.Html了,在大文件下载场景,会有可观的性能提升。

2.关于网络文件下载进度
现版本,下载文件时候,除非修改HttpHelper这个基础类,否则无法获取下载进度。
我觉得.net2.0的写法,可以更容易的添加下载进度。
最近对下载有点兴趣,想在HttpHelper里添加进度的事件反馈通知。
不知道大大对于下载进度通知这个功能,
有没有什么好的建议?
[C#] 纯文本查看 复制代码
        private MemoryStream GetMemoryStream(Stream streamResponse)
        {
            MemoryStream _stream = new MemoryStream();
            int Length = 256;
            Byte[] buffer = new Byte[Length];
            int bytesRead = streamResponse.Read(buffer, 0, Length);
            while (bytesRead > 0)
            {
                _stream.Write(buffer, 0, bytesRead);
                bytesRead = streamResponse.Read(buffer, 0, Length);
            }
            return _stream;
        }



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2017-6-9 08:18:56 | 显示全部楼层
1.第一个建议很好,这个可以考虑再加一个类型,变为Html,htmlbyte,byte三种,大家可以根据需要选择使用
2.Http模式下想做下载进度,建议使用多线程,一个线程来做很麻烦。这个我就不多说了,百度上好多例子。
 楼主| 发表于 2017-6-9 09:14:58 | 显示全部楼层
下载进度放在外部的多线程里,HttpHelper仅做单位微小量下载,这是个好建议!非常感谢
发表于 2017-6-9 09:49:48 | 显示全部楼层
pettypower 发表于 2017-6-9 09:14
下载进度放在外部的多线程里,HttpHelper仅做单位微小量下载,这是个好建议!非常感谢

恩,是的,Httphelper毕竟只是一个类,主要方向还是做爬虫Http方向,过多的关注下载是不适合的。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-3-29 08:42

© 2014-2021

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