winform 读取网页源文件 RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 System.Net.WebRequest request = System.Net.FileWebRequest.Create("www.google.com"); System.Net.WebResponse response = request.GetResponse(); System.IO.Stream stream = response.GetResponseStream(); //...... string Html = null; HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://google.cn"); request.Method = "Get"; request.ContentType = "application/x-www-form-urlencoded "; WebResponse response = request.GetResponse(); Stream s = response.GetResponseStream(); StreamReader sr = new StreamReader(s, System.Text.Encoding.GetEncoding("GB2312")); Html = sr.ReadToEnd(); s.Close(); sr.Close(); System.Net.WebRequest clinet = System.Net.WebRequest.Create("http://www.g.cn"); System.Net.HttpWebResponse aresponse = (System.Net.HttpWebResponse)clinet.GetResponse(); Stream stream = aresponse.GetResponseStream(); StreamReader reader = new StreamReader(stream, System.Text.Encoding.GetEncoding("GB2312")); string response = reader.ReadToEnd(); reader.Close(); stream.Close(); 记得有一个方法直接可以进行WebDownload,用这个方法就好了,方法名给忘记了! 楼主要的代码是public string Get(string url, string paramList) { this.URL = url; HttpWebResponse res=null; string strResult = ""; try { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url + "?" + paramList); CookieContainer cookieCon = new CookieContainer(); req.AllowAutoRedirect = true; req.Referer = "http://www.mso.com.cn/odds/index_simple.asp"; req.CookieContainer = cookieCon; req.CookieContainer.SetCookies(new Uri(this.URL), cookieHeader); res = (HttpWebResponse)req.GetResponse(); Stream receiveStream = res.GetResponseStream(); cookieHeader = req.CookieContainer.GetCookieHeader(new Uri(this.URL)); Encoding encode = System.Text.Encoding.GetEncoding(this.strEncoding); StreamReader sr = new StreamReader(receiveStream, encode); Char[] read = new Char[this.buffSize]; int count = sr.Read(read, 0, this.buffSize); while (count > 0) { strResult += new String(read, 0, count); count = sr.Read(read, 0, this.buffSize); } sr.Close(); receiveStream.Close(); } catch(Exception e) { strResult = e.Message; } finally { if ( res != null ) { res.Close(); } } return strResult; }稍作修改即可 /// <summary> /// 取得指定页的 html代码 /// </summary> /// <param name="url">指定的URL</param> /// <returns>返回得到的html代码</returns> /// 调用示例 string Ls_html=Gethtml("http://www.163.com"); private string Gethtml(string url) { try { string html = string.Empty; string encoding = string.Empty; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "get"; request.ContentType = "text/html"; request.Timeout = 60 * 1000; byte[] buffer = new byte[6072]; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (Stream reader = response.GetResponseStream()) { reader.ReadTimeout = 60 * 1000; using (MemoryStream memory = new MemoryStream()) { int index = 1; int sum = 0; while (index > 0 && sum < 100 * 6072) { index = reader.Read(buffer, 0, 6072); if (index > 0) { memory.Write(buffer, 0, index); sum += index; } } html = Encoding.GetEncoding("gb2312").GetString(memory.ToArray()); if (string.IsNullOrEmpty(html)) { return html; } else { Regex re = new Regex(@"charset=(?<charset>[\s\S]*?)[""|']"); Match m = re.Match(html.ToLower()); encoding = m.Groups["charset"].ToString(); } if (string.IsNullOrEmpty(encoding) || string.Equals(encoding.ToLower(), "gb2312")) { return html; } else { return Encoding.GetEncoding(encoding).GetString(memory.ToArray()); } } } } } catch (Exception) { return ""; } } System.Net.WebClient wc = new System.Net.WebClient(); wc.Credentials = System.Net.CredentialCache.DefaultCredentials; Byte[] pageData = wc.DownloadData(""); string html= System.Text.Encoding.Default.GetString(pageData); wc.Dispose(); System.Net.WebRequest request = System.Net.WebRequest.Create(""); System.Net.WebResponse response = request.GetResponse(); System.IO.Stream resStream = response.GetResponseStream(); System.IO.StreamReader sr = new System.IO.StreamReader(resStream, System.Text.Encoding.Default); string html = sr.ReadToEnd(); resStream.Close(); sr.Close(); private void button1_Click(object sender, EventArgs e) {string Html = null; HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://topic.csdn.net/u/20100119/22/34eeedce-61b9-4080-82f8-53ffa0840685.html?43299#replyachor"); request.Method = "Get"; request.ContentType = "application/x-www-form-urlencoded "; WebResponse response = request.GetResponse(); Stream s = response.GetResponseStream(); StreamReader sr = new StreamReader(s, System.Text.Encoding.GetEncoding("GB2312")); Html = sr.ReadToEnd(); textbox.Text=Html; s.Close(); sr.Close();}(: ........... private void button1_Click(object sender, EventArgs e) {string Html = null; HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://topic.csdn.net/u/20100119/22/34eeedce-61b9-4080-82f8-53ffa0840685.html?43299#replyachor"); request.Method = "Get"; request.ContentType = "application/x-www-form-urlencoded "; WebResponse response = request.GetResponse(); Stream s = response.GetResponseStream(); StreamReader sr = new StreamReader(s, System.Text.Encoding.GetEncoding("GB2312")); Html = sr.ReadToEnd(); textbox.Text=Html; s.Close(); sr.Close();}重贴 5楼的 前辈 你这个的确 可行的 但是我改了下网页就不行了! 是不是ContentType 的值不对?或者 网页编码不对? private void Form1_Load(object sender, EventArgs e) { WebBrowser wb = new WebBrowser(); wb.Navigate(@"http://www.baidu.com"); wb.Dock = DockStyle.Fill; this.Controls.Add(wb); } 请问div class="index_add"><a id="userpig" href="#;" class="index_add_mission" onclick="menu('view_pig.alc',this)"></a>他是通过 一个控件 弹出 'view_pig.alc 这篇 子网页 就算 获取了 主代码 代码就是上面的这段控件的怎么看出 这个控件弹出 子页 的 源文件? 谢谢麻烦告诉我 <script>self.location.href='http://sl.qq.com?PcacheTime=1264234681'</script>这个 子页面 的RICHTECTBOX 获取的 源文件却是这 别的 都能实现。请路过的朋友告之? 是不是被JAVA屏蔽源文件? 请问,WPF只是做桌面程序吗? winform 3个窗口 事件的问题 asp.net当用户点击浏览页面的时候获取客户端IP,存到数据库中 C#采集问题 手动部署onceclick应用程序问题之mage.exe和mageui.exe 求问关于WeifenLuo组件的问题(了解的请进)! ClickOnce 高手帮忙! C#中能实现操作符重载吗 初学者进阶:从过程化编程转到面向对象编程 重写父类虚方法的子类的方法改叫虚方法吗?(探讨) 求一个正则 请教:TcpClient连接不能连续发数据
System.Net.WebRequest request = System.Net.FileWebRequest.Create("www.google.com");
System.Net.WebResponse response = request.GetResponse();
System.IO.Stream stream = response.GetResponseStream();
//......
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://google.cn");
request.Method = "Get";
request.ContentType = "application/x-www-form-urlencoded ";
WebResponse response = request.GetResponse();
Stream s = response.GetResponseStream();
StreamReader sr = new StreamReader(s, System.Text.Encoding.GetEncoding("GB2312"));
Html = sr.ReadToEnd();
s.Close();
sr.Close();
System.Net.WebRequest clinet = System.Net.WebRequest.Create("http://www.g.cn"); System.Net.HttpWebResponse aresponse = (System.Net.HttpWebResponse)clinet.GetResponse();
Stream stream = aresponse.GetResponseStream();
StreamReader reader = new StreamReader(stream, System.Text.Encoding.GetEncoding("GB2312"));
string response = reader.ReadToEnd();
reader.Close();
stream.Close();
{
this.URL = url;
HttpWebResponse res=null;
string strResult = ""; try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url + "?" + paramList);
CookieContainer cookieCon = new CookieContainer();
req.AllowAutoRedirect = true;
req.Referer = "http://www.mso.com.cn/odds/index_simple.asp"; req.CookieContainer = cookieCon;
req.CookieContainer.SetCookies(new Uri(this.URL), cookieHeader);
res = (HttpWebResponse)req.GetResponse();
Stream receiveStream = res.GetResponseStream();
cookieHeader = req.CookieContainer.GetCookieHeader(new Uri(this.URL));
Encoding encode = System.Text.Encoding.GetEncoding(this.strEncoding);
StreamReader sr = new StreamReader(receiveStream, encode);
Char[] read = new Char[this.buffSize];
int count = sr.Read(read, 0, this.buffSize);
while (count > 0)
{
strResult += new String(read, 0, count);
count = sr.Read(read, 0, this.buffSize);
}
sr.Close();
receiveStream.Close();
}
catch(Exception e)
{
strResult = e.Message;
}
finally
{
if ( res != null )
{
res.Close();
}
}
return strResult;
}
稍作修改即可
/// <summary>
/// 取得指定页的 html代码
/// </summary>
/// <param name="url">指定的URL</param>
/// <returns>返回得到的html代码</returns>
/// 调用示例 string Ls_html=Gethtml("http://www.163.com");
private string Gethtml(string url)
{
try
{
string html = string.Empty;
string encoding = string.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "get";
request.ContentType = "text/html";
request.Timeout = 60 * 1000;
byte[] buffer = new byte[6072];
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{ using (Stream reader = response.GetResponseStream())
{
reader.ReadTimeout = 60 * 1000;
using (MemoryStream memory = new MemoryStream())
{
int index = 1;
int sum = 0;
while (index > 0 && sum < 100 * 6072)
{
index = reader.Read(buffer, 0, 6072);
if (index > 0)
{
memory.Write(buffer, 0, index);
sum += index;
}
}
html = Encoding.GetEncoding("gb2312").GetString(memory.ToArray()); if (string.IsNullOrEmpty(html))
{
return html;
}
else
{
Regex re = new Regex(@"charset=(?<charset>[\s\S]*?)[""|']");
Match m = re.Match(html.ToLower());
encoding = m.Groups["charset"].ToString();
} if (string.IsNullOrEmpty(encoding) || string.Equals(encoding.ToLower(), "gb2312"))
{
return html;
}
else
{
return Encoding.GetEncoding(encoding).GetString(memory.ToArray());
}
}
}
}
}
catch (Exception)
{
return "";
}
}
wc.Credentials = System.Net.CredentialCache.DefaultCredentials;
Byte[] pageData = wc.DownloadData("");
string html= System.Text.Encoding.Default.GetString(pageData);
wc.Dispose();
System.Net.WebRequest request = System.Net.WebRequest.Create("");
System.Net.WebResponse response = request.GetResponse();
System.IO.Stream resStream = response.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(resStream, System.Text.Encoding.Default);
string html = sr.ReadToEnd();
resStream.Close();
sr.Close();
{
string Html = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://topic.csdn.net/u/20100119/22/34eeedce-61b9-4080-82f8-53ffa0840685.html?43299#replyachor");
request.Method = "Get";
request.ContentType = "application/x-www-form-urlencoded ";
WebResponse response = request.GetResponse();
Stream s = response.GetResponseStream();
StreamReader sr = new StreamReader(s, System.Text.Encoding.GetEncoding("GB2312"));
Html = sr.ReadToEnd();
textbox.Text=Html;
s.Close();
sr.Close();
}(: ...........
{
string Html = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://topic.csdn.net/u/20100119/22/34eeedce-61b9-4080-82f8-53ffa0840685.html?43299#replyachor");
request.Method = "Get";
request.ContentType = "application/x-www-form-urlencoded ";
WebResponse response = request.GetResponse();
Stream s = response.GetResponseStream();
StreamReader sr = new StreamReader(s, System.Text.Encoding.GetEncoding("GB2312"));
Html = sr.ReadToEnd();
textbox.Text=Html;
s.Close();
sr.Close();
}重贴
{
WebBrowser wb = new WebBrowser();
wb.Navigate(@"http://www.baidu.com");
wb.Dock = DockStyle.Fill;
this.Controls.Add(wb);
}
div class="index_add"><a id="userpig" href="#;" class="index_add_mission" onclick="menu('view_pig.alc',this)"></a>他是通过 一个控件 弹出 'view_pig.alc 这篇 子网页 就算 获取了 主代码 代码就是上面的这段控件的
怎么看出 这个控件弹出 子页 的 源文件? 谢谢麻烦告诉我
这个 子页面 的RICHTECTBOX 获取的 源文件却是这 别的 都能实现。请路过的朋友告之? 是不是被JAVA屏蔽源文件?