问题1 获取HTML页面存在乱码 请问有什么好的方式了?
常规的获取
1 HTTP请求头返回的编码 错误的
2 获取HTML页面标签当中设置的编码 <meta charset="utf-8"/> 错误的
3.开源组建NUniversalCharDet这个通过计算字符串编码百分比获取 这个稍微靠谱点但是还是会出错。
以上都是经过本人长上时间测试过了的。
请问各位大虾有什么号的解决方案。
问题2 获取任意列表页面的 内容页地址
例如:获取博客园首页 博文列表当中 文章的具体地址
或者:获取网易新闻页面 列表当中 新闻的具体地址
希望各位大虾能提供点思路
如何去获取页面当中的 内容页 的地址
如果有不清楚的请各位见谅哈....
还有就是没分了....就只有这点了
string url=url地址; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Accept = "*/*"; //接受任意文件 request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)"; // 模拟使用IE在浏览 http://www.52mvc.com request.AllowAutoRedirect = true;//是否允许302 //request.CookieContainer = new CookieContainer();//cookie容器, request.Referer = url; //当前页面的引用 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("utf-8")); //此处转换编码 html = reader.ReadToEnd();
获取源代码之后 再用正则表达式 截取就行了
同学 你这种方式不对头,在大规模抓取页面的时候 百分之百有乱码页面 而且用正则获取页面 肯定有问题
@落幕残情: request.UserAgent 在采集的时候 最好用 谷歌或者百度的 用IE 10个页面就被屏蔽
@落幕残情: 先抓取页面源代码,再转换编码,再用正则,不行吗?
@欺世: 肯定不行,测试了N回 不信你可以试试 还有C#的正则是个坑爹货
能提供下你获取错误编码的页面url吗?
没有具体页面 面向整个互联网
@落幕残情: 没有通用的,只有合适的,不可能有一种写法可以满足所有的需求。做过网络监控,对你提的东西还是很熟悉的。
你上面写的那么多条错误,我也看不懂,不过我可以说下浏览器HttpWebRequest调用返回必不可少的几项内容:1.编码格式(浏览器解析使用);2.内容(可能是文本,也可能是压缩数据GZIP)3.返回的内容格式(如果已压缩,解压数据使用)
至于传入什么 就像一楼的说的那样,可能
//request.CookieContainer = new CookieContainer();//cookie容器,如果是帐号登录 ,里面要放入凭证等验证请求用户什么的一些其他特征,浏览器中可获取
request.Referer = url; //当前页面的引用,大多数情况下可有可无,不过有些会做验证,主要验证域名是否匹配
以及当前浏览器模式:request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)";
@小尧弟: 你好 你分析的有道理,目前我只能做到 百分之95以上的页面正常解析,只是希望找到更好的解决方案,例如IE的智能编码解析 火狐的开源编码解析组建 都可以通用 但是解析得不上很准确 谢谢你的回答
编码转换,内容用正则