怎样获取一个网页本身的html代码? 如我在A.aspx 怎样获取B.aspx的html的代码。如我们用记事本察看网页,获取的那些代码一样。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string url="http://163.ifcast.ifocus.cn/"; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); try { using (HttpWebResponse res = (HttpWebResponse)req.GetResponse()) { using (StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.Default)) { return sr.ReadToEnd(); } } } catch (System.Exception e) { return @"Error"; } finally { req.Abort(); } } public static string GetHttpSourceValue(string a_strUrl) { string strResult; HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(new System.Uri(a_strUrl)); myReq.Method = "GET"; myReq.Accept = "*/*"; myReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";//下载网页源码// System.Threading.Thread.Sleep(1000); try { HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); string tmp = myReq.Headers.ToString(); Stream myStream = HttpWResp.GetResponseStream(); StreamReader sr = new StreamReader(myStream, Encoding.Default); StringBuilder strBuilder = new StringBuilder(); while (-1 < sr.Peek()) { strBuilder.Append(sr.ReadLine() + "\r\n"); } strResult = strBuilder.ToString();// StreamWriter sw = new StreamWriter("E:\\1.txt", false, Encoding.Default);// sw.Write(strResult); myStream.Close(); sr.Close();// sw.Close(); } catch (Exception exp) { strResult = "错误:" + exp.Message; } return strResult; // StreamWriter sw = new StreamWriter(SaveFileName(), false, Encoding.Default); // sw.Write(body); // sw.Close(); } 谢谢各位,有没有在网页中获取的,上面看上去似乎是winform /// <summary> /// 获取网页源文件 /// </summary> /// <param name="url">网页地址</param> /// <param name="charset">网页编码类型 如:gb2312</param> /// <returns>返回网页源文件</returns> public static string GetSnatchHtml(string url, string charset) { string pageHtml = ""; try { HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); myHttpWebRequest.Method = "GET"; myHttpWebRequest.Timeout = 30000; //设置超时时间 HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); Stream receiveStream = myHttpWebResponse.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding(charset.ToLower())); string returnVal = readStream.ReadToEnd().Trim(); readStream.Close(); receiveStream.Close(); return returnVal; } catch (Exception ee) { string s = url + ":" + ee.Message + ";" + ee.Source + ";" + ee.StackTrace + ";"; } return pageHtml; } to:wang520d如下面的代码,我调用了你给的函数,但没有输出。url: string url="test.aspx"; 是与此网页在同一目录下。 ------------------------------------------------------------------using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.IO;using System.Text;using System.Net;public partial class testHtml : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { string url="test.aspx"; string charset="unicode"; string getString = GetSnatchHtml(url, charset); Response.Write("GetString is:" + "<br>"); Response.Write(getString); } public static string GetSnatchHtml(string url, string charset) { string pageHtml = ""; try { HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); myHttpWebRequest.Method = "GET"; myHttpWebRequest.Timeout = 30000; //设置超时时间 HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); Stream receiveStream = myHttpWebResponse.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding(charset.ToLower())); string returnVal = readStream.ReadToEnd().Trim(); readStream.Close(); receiveStream.Close(); return returnVal; } catch (Exception ee) { string s = url + ":" + ee.Message + ";" + ee.Source + ";" + ee.StackTrace + ";"; } return pageHtml; }} 也就是说被调用网页在同一目录下,我不想写成Http这样的url 除了用HttpRequest外有很多方法,而且是100%可行的比如 :你可以在A.aspx 页面的pageload事件中加入Response.Filter=new xxxxx(Response.Filter);xxxxx是一个继承至Stream的类,你可以这这个类中重写Write()方法,A.aspx最后会调用这个Write()方法,你可以在里面得到整个A.aspx 的html,这个时候你可以把得到的A.aspx 的html放入Session或Cache或其他的地方,然后在B.aspx中取第2种方法:重写 Render 方法,并执行自己的处理 protected override void Render(HtmlTextWriter writer) { StringWriter sw = new StringWriter(); HtmlTextWriter htmlWriter = new HtmlTextWriter(sw); // html 源码 base.Render(htmlWriter); string html = sw.ToString(); //得到该页面的html后,进行处理,放入一个B.aspx页面可以访问的地方 } FCKeditor在IE下无法正常显示 [Help]如何向Int/Number类型字段插入空值及根据ID修改控件属性? asp.net 字符串格式不正确 请问ASP.NET网页里面嵌入的javascript如何操作控件 新手问个验证控件的问题 这两段代码哪个比较好呀 和女友恋爱一年零一天之后分手,散分 用sql读取某一行记录的前一条和后一条记录的问题 如何在.cs里面写js的事件 简单问题,如何,把'this.value'变成 this.value,详细见.... 为什么我的ajax 函数参数objID为空 请问谁有asp.net +c# 聊天室的代码?马上给分
string url="http://163.ifcast.ifocus.cn/";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
try
{
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
using (StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.Default))
{
return sr.ReadToEnd();
}
}
}
catch (System.Exception e)
{
return @"Error";
}
finally
{
req.Abort();
}
}
{
string strResult;
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(new System.Uri(a_strUrl));
myReq.Method = "GET";
myReq.Accept = "*/*";
myReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";//下载网页源码
// System.Threading.Thread.Sleep(1000);
try
{
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); string tmp = myReq.Headers.ToString(); Stream myStream = HttpWResp.GetResponseStream(); StreamReader sr = new StreamReader(myStream, Encoding.Default);
StringBuilder strBuilder = new StringBuilder();
while (-1 < sr.Peek())
{
strBuilder.Append(sr.ReadLine() + "\r\n");
} strResult = strBuilder.ToString();
// StreamWriter sw = new StreamWriter("E:\\1.txt", false, Encoding.Default);
// sw.Write(strResult);
myStream.Close();
sr.Close();
// sw.Close();
}
catch (Exception exp)
{
strResult = "错误:" + exp.Message;
}
return strResult;
// StreamWriter sw = new StreamWriter(SaveFileName(), false, Encoding.Default);
// sw.Write(body);
// sw.Close();
}
/// <summary>
/// 获取网页源文件
/// </summary>
/// <param name="url">网页地址</param>
/// <param name="charset">网页编码类型 如:gb2312</param>
/// <returns>返回网页源文件</returns>
public static string GetSnatchHtml(string url, string charset)
{
string pageHtml = "";
try
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
myHttpWebRequest.Method = "GET";
myHttpWebRequest.Timeout = 30000; //设置超时时间 HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream receiveStream = myHttpWebResponse.GetResponseStream();
StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding(charset.ToLower()));
string returnVal = readStream.ReadToEnd().Trim();
readStream.Close();
receiveStream.Close();
return returnVal;
}
catch (Exception ee)
{
string s = url + ":" + ee.Message + ";" + ee.Source + ";" + ee.StackTrace + ";";
}
return pageHtml;
}
如下面的代码,我调用了你给的函数,但没有输出。
url: string url="test.aspx"; 是与此网页在同一目录下。
------------------------------------------------------------------
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
using System.Net;
public partial class testHtml : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string url="test.aspx";
string charset="unicode";
string getString = GetSnatchHtml(url, charset);
Response.Write("GetString is:" + "<br>");
Response.Write(getString);
}
public static string GetSnatchHtml(string url, string charset)
{
string pageHtml = "";
try
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
myHttpWebRequest.Method = "GET";
myHttpWebRequest.Timeout = 30000; //设置超时时间 HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream receiveStream = myHttpWebResponse.GetResponseStream();
StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding(charset.ToLower()));
string returnVal = readStream.ReadToEnd().Trim();
readStream.Close();
receiveStream.Close();
return returnVal;
}
catch (Exception ee)
{
string s = url + ":" + ee.Message + ";" + ee.Source + ";" + ee.StackTrace + ";";
}
return pageHtml;
}}
有很多方法,而且是100%可行的
比如 :
你可以在A.aspx 页面的pageload事件中加入
Response.Filter=new xxxxx(Response.Filter);
xxxxx是一个继承至Stream的类,你可以这这个类中重写Write()方法,A.aspx最后会调用这个Write()方法,你可以在里面得到整个A.aspx 的html,
这个时候你可以把得到的A.aspx 的html放入Session或Cache或其他的地方,然后在B.aspx中取第2种方法:重写 Render 方法,并执行自己的处理 protected override void Render(HtmlTextWriter writer)
{
StringWriter sw = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(sw);
// html 源码
base.Render(htmlWriter);
string html = sw.ToString(); //得到该页面的html后,进行处理,放入一个B.aspx页面可以访问的地方 }