webbrowser 中获取超链接的路径,乱码问题 webbrowser 中获取超链接的路径,查看源文件的时候是urlencode的,但是我通过webbrowser获取过来的是乱码网页的编码格式是utf-8的此处如何编码转换?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果没有用过webbrowser的,给点编码转换的代码也可以的 // 获取指定网页的HTML代码 static string GetPageSource(string URL) { Uri uri =new Uri(URL); HttpWebRequest hwReq = (HttpWebRequest)WebRequest.Create(uri); HttpWebResponse hwRes = (HttpWebResponse)hwReq.GetResponse(); hwReq.Method = "Get"; hwReq.KeepAlive = false; //从输入的网站提取HTML源码 StreamReader reader = new StreamReader(hwRes.GetResponseStream(),System.Text.Encoding.GetEncoding("GB2312")); return reader.ReadToEnd(); }你用我的代码试试看是否乱码 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (this.webBrowser1.Url.ToString() != e.Url.ToString()) return; if (this.webBrowser1.ReadyState != WebBrowserReadyState.Complete) return; HtmlDocument document = this.webBrowser1.Document; tosave(); if (document.All["pagnNextLink"] != null) { document.All["pagnNextLink"].InvokeMember("click"); } } private void tosave() { HtmlDocument document = this.webBrowser1.Document; HtmlElement atfResults = document.All["atfResults"]; if (atfResults != null) { HtmlElementCollection links = atfResults.GetElementsByTagName("a"); foreach (HtmlElement link in links) { HtmlElementCollection c = link.Children; if (c.Count == 1 && c[0].GetAttribute("alt") == "产品详细信息") { string url = link.GetAttribute("href"); //byte[] Temp = System.Text.Encoding.UTF8.GetBytes(url); //url = System.Text.Encoding.GetEncoding("gbk").GetString(Temp); access.save(url); } } } } 哦webbroeser啊~~~~~没用那个抓过连接,都是在控制台或者winform下输入网址抓连接的 你这个是用webbrowser流来修改编码的,能不能直接给一个字符串编码转换过来,你这种,我很难判断,页面代码比较乱,正则不好写 因为他这里用ajax 的,所以抓起来比较费劲 正则简单,需要什么提取什么就行了我的小程序用着也挺好呵呵没用过webbrowser抓连接,我真不知道该怎么说了,关于编码,我再我的程序中都是://获取页面StreamReader reader = new StreamReader(hwRes.GetResponseStream(),System.Text.Encoding.GetEncoding("GB2312"));//保存提取的信息StreamWriter writer = new StreamWriter("图像链接列表.txt",true,Encoding.UTF8);需要什么编码就Encoding一下就行了 http://www.cnblogs.com/acis_/articles/1363860.html这里获取过来的是整个浏览器的源文件,但是我这里如果这样就很难再获取标签了WinForm开发浏览器,WebBrowser获取页面内容,解决中文乱码C#写一个简单的浏览器,遇到一个小小的问题,即:在通过WebBrowser.DocumentText获取的页面内容是乱码System.IO.StreamReader getReader = new System.IO.StreamReader(this.webBrowser.DocumentStream, System.Text.Encoding.GetEncoding("gb2312"));string gethtml = getReader.ReadToEnd();注意:这儿使用的不是DocumentText属性获取的页面内容。UTF8编码方式,只是在读取的时候,指定为UTF8即可啊.System.IO.StreamReader getReader = new System.IO.StreamReader(this.webBrowser.DocumentStream, System.Text.Encoding.GetEncoding("utf8"));WebBrowser的编码可以从文档对象中获得,将代码改为如下即可。System.IO.StreamReader getReader = new System.IO.StreamReader(this.webBrowser.DocumentStream, System.Text.Encoding.GetEncoding(this.webBrowser.Document.Encoding));string gethtml = getReader.ReadToEnd(); 在.NET中的字符、字符串,只有一种编码,那就是Unicode它就是这么定义的,不可能有其它编码的字符串存在其它编码只能存在于byte数组、流、文件中 http://topic.csdn.net/u/20080618/09/0b707442-f952-44a6-884d-2750677e1a42.html 虽然问题没有解决,但是基本上明白这样是不行的了,谢谢了如果有时间到http://topic.csdn.net/u/20110303/13/8fd229b2-211d-4eee-8379-26751b66b898.html?seed=1162696442&r=71918725也回复一个,我把分给你 有form经验的高手支招???? wince datagrid改变列宽问题 Button的ImageList贴图问题 datetimepicker系统当前时间 .net写的winfrom程序总是无提示崩溃该这么办? VS2005 无法启动 金额改成中文大写 如何在程序运行时动态设置DATAGRIDVIEW的comboxcolumn的datasource 问一个关于dataGrid的问题? 对称加密问题 用C#开发的,在wince运行载入图片,内存能不能释放?该如何释放? 面试题求解
static string GetPageSource(string URL)
{
Uri uri =new Uri(URL); HttpWebRequest hwReq = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse hwRes = (HttpWebResponse)hwReq.GetResponse(); hwReq.Method = "Get"; hwReq.KeepAlive = false; //从输入的网站提取HTML源码
StreamReader reader = new StreamReader(hwRes.GetResponseStream(),System.Text.Encoding.GetEncoding("GB2312"));
return reader.ReadToEnd();
}你用我的代码试试看是否乱码
{
if (this.webBrowser1.Url.ToString() != e.Url.ToString())
return;
if (this.webBrowser1.ReadyState != WebBrowserReadyState.Complete)
return;
HtmlDocument document = this.webBrowser1.Document;
tosave();
if (document.All["pagnNextLink"] != null)
{ document.All["pagnNextLink"].InvokeMember("click");
}
} private void tosave()
{
HtmlDocument document = this.webBrowser1.Document;
HtmlElement atfResults = document.All["atfResults"];
if (atfResults != null)
{
HtmlElementCollection links = atfResults.GetElementsByTagName("a");
foreach (HtmlElement link in links)
{
HtmlElementCollection c = link.Children;
if (c.Count == 1 && c[0].GetAttribute("alt") == "产品详细信息")
{
string url = link.GetAttribute("href");
//byte[] Temp = System.Text.Encoding.UTF8.GetBytes(url);
//url = System.Text.Encoding.GetEncoding("gbk").GetString(Temp);
access.save(url);
}
}
} }
你这个是用webbrowser流来修改编码的,能不能直接给一个字符串编码转换过来,你这种,我很难判断,页面代码比较乱,正则不好写
我的小程序用着也挺好呵呵没用过webbrowser抓连接,我真不知道该怎么说了,关于编码,我再我的程序中都是://获取页面
StreamReader reader = new StreamReader(hwRes.GetResponseStream(),System.Text.Encoding.GetEncoding("GB2312"));//保存提取的信息
StreamWriter writer = new StreamWriter("图像链接列表.txt",true,Encoding.UTF8);
需要什么编码就Encoding一下就行了
string gethtml = getReader.ReadToEnd();注意:这儿使用的不是DocumentText属性获取的页面内容。UTF8编码方式,只是在读取的时候,指定为UTF8即可啊.
System.IO.StreamReader getReader = new System.IO.StreamReader(this.webBrowser.DocumentStream, System.Text.Encoding.GetEncoding("utf8"));
WebBrowser的编码可以从文档对象中获得,将代码改为如下即可。System.IO.StreamReader getReader = new System.IO.StreamReader(this.webBrowser.DocumentStream, System.Text.Encoding.GetEncoding(this.webBrowser.Document.Encoding));
string gethtml = getReader.ReadToEnd();
它就是这么定义的,不可能有其它编码的字符串存在
其它编码只能存在于byte数组、流、文件中
http://topic.csdn.net/u/20110303/13/8fd229b2-211d-4eee-8379-26751b66b898.html?seed=1162696442&r=71918725
也回复一个,我把分给你