求一个通用函数,参数为一个网页对应的URL地址(string类型),返回值:该网页所对应的html原文档(string类型),形如下: private string getHtml(string url)
{
... //得到url所对应的网页的html原文档.
}
{
... //得到url所对应的网页的html原文档.
}
解决方案 »
- 在设计报表时,针式EPSON打银机LQ_1600k怎么没有自定义纸张,21CM*9CM是用哪一种规格来打呢?
- 请教,winform中如何读取excel的某一列值,并存到list中
- 请问.net进程间通信,那种方式效率最高呢?
- 怎样限制鼠标的移动范围?如只能在一个显示器,不能到另一显示器
- c# 关于imagelist中的图片?
- 读取txt文件如何实现分页功能????
- 请问数组如何做属性?泛型LIST呢?
- 关于在C#里调用CMD的问题
- lblCount.Text="记录数:"+dtData.Rows.Count.ToString();
- 请求推荐Open source的CRM系统,想研究一下.谢谢
- 在程序启动时如何保存上次启动时的某个窗口的设置
- .Net 搜索问题(请高手们帮帮忙)万分感谢
private string getHtml(string url)
{
System.Net.WebClient wc = new System.Net.WebClient();
return wc.DownloadString(url);
}
HttpWebRequest myRequest =
(HttpWebRequest)WebRequest.Create("http://localhost/MyIdentity/Default.aspx");
myRequest.Method = "POST";
myRequest.ContentType="application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream=myRequest.GetRequestStream();
// Send the data.
newStream.Write(data,0,data.Length);
newStream.Close();
HttpRequest 和 WebClient 都可以的
using System.Net;
using System.IO;
private string getHtml(string url)
{
try
{
WebClient client = new WebClient();
Stream strm = client.OpenRead(url);
StreamReader reader = new StreamReader(strm, Encoding.Default);
string strline = "";
string html = "";
while ((strline = reader.ReadLine()) != null)
{
html+="\r\n"+strline;
}
return html;
strm.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
using System.Net;
using System.Text;
using System.Text.RegularExpressions;class Program
{
// 获取网页的HTML内容,根据网页的charset自动判断Encoding
static string GetHtml(string url)
{
return GetHtml(url, null);
} // 获取网页的HTML内容,指定Encoding
static string GetHtml(string url, Encoding encoding)
{
byte[] buf = new WebClient().DownloadData(url);
if (encoding != null) return encoding.GetString(buf);
string html = Encoding.UTF8.GetString(buf);
encoding = GetEncoding(html);
if (encoding == null || encoding == Encoding.UTF8) return html;
return encoding.GetString(buf);
} // 根据网页的HTML内容提取网页的Encoding
static Encoding GetEncoding(string html)
{
string pattern = @"(?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+)";
string charset = Regex.Match(html, pattern).Groups["charset"].Value;
try { return Encoding.GetEncoding(charset); }
catch (ArgumentException) { return null; }
} // 根据网页的HTML内容提取网页的Title
static string GetTitle(string html)
{
string pattern = @"(?si)<title(?:\s+(?:""[^""]*""|'[^']*'|[^""'>])*)?>(?<title>.*?)</title>";
return Regex.Match(html, pattern).Groups["title"].Value.Trim();
} // 打印网页的Encoding和Title
static void PrintEncodingAndTitle(string url)
{
string html = GetHtml(url);
Console.WriteLine("[{0}] [{1}]", GetEncoding(html), GetTitle(html));
} // 程序入口
static void Main()
{
PrintEncodingAndTitle("http://www.msdn.net/");
PrintEncodingAndTitle("http://www.cnblogs.com/");
PrintEncodingAndTitle("http://www.cnblogs.com/skyiv/");
PrintEncodingAndTitle("http://www.csdn.net/");
PrintEncodingAndTitle("http://news.163.com/");
}
}
/**//* 程序输出:
[] [MSDN: Microsoft Developer Network]
[System.Text.UTF8Encoding] [博客园 - 程序员的网上家园]
[System.Text.UTF8Encoding] [空间/IV - 博客园]
[System.Text.UTF8Encoding] [CSDN.NET - 中国最大的IT技术社区,为IT专业技术人员提供最全面的信息传播和服务平台]
[System.Text.DBCSCodePageEncoding] [新闻中心_网易新闻]
*/