解决HttpWebRequest和HtmlAgilityPack采集网页中文乱码问题

代码如下

 代码如下 复制代码
public Encoding GetEncoding(string CharacterSet)
{
switch (CharacterSet)
{
case "gb2312": return Encoding.GetEncoding("gb2312");
case "utf-8": return Encoding.UTF8;
default: return Encoding.Default;
}
}
public string HttpGet(string url)
{
string responsestr = "";
HttpWebRequest req = HttpWebRequest.Create(url) as HttpWebRequest;
req.Accept = "*/*";
req.Method = "GET";
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1";
using (HttpWebResponse response = req.GetResponse() as HttpWebResponse)
{
Stream stream;
if (response.ContentEncoding.ToLower().Contains("gzip"))
{
stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
}
else if (response.ContentEncoding.ToLower().Contains("deflate"))
{
stream = new DeflateStream(response.GetResponseStream(), CompressionMode.Decompress);
}
else
{
stream = response.GetResponseStream();
}
using (StreamReader reader = new StreamReader(stream, GetEncoding(response.CharacterSet)))
{
responsestr = reader.ReadToEnd();
stream.Dispose();
}
}
return responsestr;
}

调用HttpGet就可以获取网址的源码了,得到源码后, 现在用一个利器HtmlAgility来解析html了,不会正则不要紧,此乃神器啊。老板再也不用担心我的正则表达式了。

至于这个神器的用法,园子文章很多,写的也都挺详细的,在此不赘余了。

 
下面是抓取园子首页的文章列表:

 代码如下 复制代码

string html = HttpGet("http://www.111cn.net/");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
//获取文章列表
var artlist = doc.DocumentNode.SelectNodes("//div[@class='post_item']");
foreach (var item in artlist)
{
HtmlDocument adoc = new HtmlDocument();
adoc.LoadHtml(item.InnerHtml);
var html_a = adoc.DocumentNode.SelectSingleNode("//a[@class='titlelnk']");
htm = htm&(string.Format("标题为:{0},链接为:{1}<br>",html_a.InnerText,html_a.Attributes["href"].Value));
}

好了运行有中文的网页是没有问题的哦,取出来的截图我就不介绍了,当然大家可进行一些调整处理,本文章主要是介绍解决中文乱码问题。

时间: 2024-09-11 12:17:59

解决HttpWebRequest和HtmlAgilityPack采集网页中文乱码问题的相关文章

PHP中使用file_get_contents抓取网页中文乱码问题解决方法_php技巧

本文实例讲述了PHP中使用file_get_contents抓取网页中文乱码问题解决方法.分享给大家供大家参考.具体方法如下: file_get_contents函数本来就是一个非常优秀的php自带本地与远程文件操作函数,它可以让我们不花吹挥之力把远程数据直接下载,但我在使用它读取网页时会碰到有些页面是乱码了,这里就来给各位总结具体的解决办法. 根据网上有朋友介绍说原因可能是服务器开了GZIP压缩,下面是用firebug查看我的网站的头信息,Gzip是开了的,请求头信息原始头信息,代码如下: 复

解决Ajax加载JSon数据中文乱码问题

一.问题描述 使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢? 此处为的异步请求的配置: Java代码 async: { enable: true, url: basePath + '/sysMenu/listSysMenu', autoParam: ["id=parentId"] } SpringMvc中文字符处理: Java代码 <mvc:annotation-driven> <mvc

配置Tomcat解决URL传参引出的中文乱码问题

                         今天在写一个JSP页面时候,发现下面报错: <span style="font-size:18px;"> <a href="request.jsp?username=小七七">测试URL传参</a></span>     通常情况下,通过使用contentType和下面的就可以解决传参过程中的中文乱码问题,但是貌似URL传参还要设备别的东西. <% request

解决MySQL客户端输出窗口显示中文乱码问题的办法_Mysql

最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示: 上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的字符编码不对造成的,可以使用如下的命令查看输出窗口使用的字符编码:show variables like 'char%'; 命令执行完成之后显示结果如下所示: 可以看到,现在是使用utf8字符编码来显示中文数据的,但是因为操作系统是中文操作系统,默认使用的字符集是GB2312,所以需要把输出窗口使用的字符编码

DW MX 2004网页中文乱码问题:解决

解决|网页|问题|中文|中文乱码 用DW MX 2004编辑网页的时候,很多朋友经常会遇到中文乱码的情况.你遇到过么?

DW MX 2004网页中文乱码问题:尝试解决

解决|网页|问题|中文|中文乱码 用DW MX 2004编辑网页的时候,很多朋友经常会遇到中文乱码的情况.你遇到过么? 上一节我们了解了网页中的中文乱码一般原因是由于meta标签里面设定编码的的问题.现在我们来试试修改字体的参数是否能解决这个问题. 在DW MX 2004中修改字体的参数. 唉~!果然是有问题,怎么会是"土耳其字符"? 立马修改"字体设置"为"简体中文". 晕,都改过来了,怎么还是乱码?!:( 看来这种办法还不行,那我们下节试试第

DW MX 2004网页中文乱码问题:常见原因

网页|问题|中文|中文乱码 用DW2004编辑网页的时候,很多朋友经常会遇到中文乱码的情况.你遇到过么? 我们先来看看网页中的中文乱码一般是怎么出现的. 也许很多时候用其他软件(比如Editplus)写程序的时候,忘了meta标签里面设定编码.然后当需要用Dreamweaver编辑修改时,中文的乱码就来了. 如下:这是一份我自己写的ASP源文件,现用记事本打开 你可以看到内容,中文显示完全正常 OK,那么用DW2004来查看吧:惨了,中文全是乱码 怕什么,不着急,下节我们看看有什么可行的解决方法

Mysql与JSP网页中文乱码问题的解决方案

js|mysql|解决|网页|问题|中文|中文乱码 自从以前学习JSP开始,中文乱码问题就一直不断,苦不堪言.这次在项目开始之前,我们要解决的第一个问题就是把mysql的中文乱码问题搞定.经过多天的努力,终于成功的解决了中文乱码问题,特写在这里,以备后用. 软件及环境:Windows XP(2000), j2sdk1.4.2, Tomcat 5.0.25, mysql 4.1, EMS Mysql Manager 2(方便建表,版本2.8.5.1),驱动为mysql-connector-java

DW MX 2004网页中文乱码问题解决

解决|网页|问题|中文|中文乱码 用DW MX 2004编辑网页的时候,很多朋友经常会遇到中文乱码的情况.你遇到过么? 前面我们了解了网页中的中文乱码一般原因是由于meta标签里面设定编码的的问题,尝试修改字体的参数,结果没能很好地解决这个问题,这一节我们试试修改网页编码. 在DW MX 2004中的"修改"菜单里修改网页编码. 看来这回应该改对咯. 汗~!竟然还是乱码! 再用记事本打开看看,玩完了,真傻眼了,连这个也被同化掉了 -_-!!!!!!!!!!!!!! 综上两种方法,对我来