62,266
社区成员
发帖
与我相关
我的任务
分享 HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Timeout = 1000 * 20;//这里加了个时间控制
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
Stream stream = webResponse.GetResponseStream();
System.IO.StreamReader streamReader = new StreamReader(stream, System.Text.Encoding.GetEncoding(code));
string content = streamReader.ReadToEnd();
streamReader.Close();
webResponse.Close();
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
StringWriter wr = new StringWriter();
Server.Execute(this.TextBox1.Text, wr); //你可以使用第三个参数传递页面的更多初始数据
this.Label1.Text = Server.HtmlEncode(wr.ToString());
File.WriteAllText(Server.MapPath(this.TextBox2.Text), wr.ToString());
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>演示取得当前网站中其它网页的源代码只需要两行代码就够了</title>
</head>
<body>
<form id="form1" runat="server" defaultbutton="Button1">
<div>
请输入本网站的页面名称:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
请输入目标文件名称<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><hr />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
private string GetHtml(string url, string charSet)
{
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultCredentials;
byte[] myDataBuffer = myWebClient.DownloadData(url);
string strWebData = Encoding.Default.GetString(myDataBuffer);
Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)\"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
string webCharSet = charSetMatch.Groups[2].Value;
if (charSet == null || charSet == "")
charSet = webCharSet;
if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
return strWebData;
}
/// <summary>
/// 获取网页的HTML代码
/// </summary>
/// <param name="url">Url地址(http://www.baidu.com/)</param>
/// <param name="Prog">进度条</param>
/// <returns></returns>
public static string GetUrlData(string url,ProgressBar Prog)
{
HttpWebResponse res = null;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
res = (HttpWebResponse)req.GetResponse();
long totalBytes = res.ContentLength;
Stream input = null;
input = res.GetResponseStream();
int totalDownloadedByte = 0;
byte[] by = new byte[10245];
string Content=null;
System.Text.Encoding encoder = System.Text.Encoding.GetEncoding("GB2312");
do
{
totalDownloadedByte = input.Read(by, 0, (int)by.Length);
Content+=encoder.GetString(by, 0, totalDownloadedByte);
if (Prog.Value + totalDownloadedByte <= Prog.Maximum)
{
Prog.Value += totalDownloadedByte;
Application.DoEvents();
}
else
{
Prog.Value = Prog.Maximum;
}
}
while (totalDownloadedByte != 0);
res.Close();
Prog.Value =0 ;
return Content;
}