用WebClient下载网页数据出现问题
我做的一个应用,在用WebClient的OpenReadAsync下载同一个网站(http://china.nba.com/news/)的一些数据时,出现:
1、有些页面一定能下载成功(例如:http://china.nba.com/news/4/2013-05-31/1254/13520.html)
2、有些页面一定下载失败--下载的Stream的Length明显短了,导致最终解析出来都是乱码(例如:http://china.nba.com/news/4/2013-05-30/0210/13498.html)
3、有些页面多试几次有可能成功(例如:http://china.nba.com/news/4/2013-05-31/1700/13523.html)
是在是搞不清出了什么问题,求大神指教? WP WebClient 乱码
[解决办法]
Accept: text/html, application/xhtml+xml, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Accept-Encoding: gzip, deflate
把这些请求头捎带上
[解决办法]
貌似是 网页压缩的问题,页面采用了gzip压缩传输,我也遇到了类似的问题,不过我要的页面采用deflate压缩,找了两天办法了最后找到了解决楼主gzip解压的办法,自己deflate的暂时还没找到。下面是方法,亲测能完美输出并且一并解决中文乱码的编码问题
引用两个dll库 SharpGIS.GZipWebClient 和 HtmlAgilityPack(HtmlAgilityPack要用1.0.0的)
WebClient modelClient = new SharpGIS.GZipWebClient();
modelClient.Encoding = new HtmlAgilityPack.Gb2312Encoding(); //加入这句设定编码
modelClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient1_DownloadStringCompleted);
modelClient.DownloadStringAsync(new Uri("http://china.nba.com/news/4/2013-05-31/1254/13520.html"));