【发布时间】:2009-10-28 02:53:09
【问题描述】:
有没有一种简单的方法,使用 C# 打开任意 URL,读入文本,并将其缩减为网页中显示的内容?我想我可以得到
内容,并逐个字符地迭代该内容,撕掉 (包括)之间的任何内容。我简要地查看了 HTML Agiligy Pack,可能是一个解决方案,但对于我正在尝试做的事情来说,它似乎非常繁重。同样,我想要的只是一个文本字符串,它表示将在屏幕上显示的任意 URL 的文本。
【问题讨论】:
有没有一种简单的方法,使用 C# 打开任意 URL,读入文本,并将其缩减为网页中显示的内容?我想我可以得到
内容,并逐个字符地迭代该内容,撕掉 (包括)之间的任何内容。我简要地查看了 HTML Agiligy Pack,可能是一个解决方案,但对于我正在尝试做的事情来说,它似乎非常繁重。同样,我想要的只是一个文本字符串,它表示将在屏幕上显示的任意 URL 的文本。
【问题讨论】:
我仍然会选择 HTML Agility 包 - 一开始它需要做更多的工作,但它更灵活,最后的设计也更好,因为它会提供更多功能 - 例如。 XPath 样式查询。
【讨论】:
如果您只需要 HTML 的文本表示,这应该可以完成工作:
using System.Net;
...
public string GetSiteStringContents(string url)
{
StringBuilder sb = new StringBuilder();
byte[] buf = new byte[8192];
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
do
{
count = resStream.Read(buf, 0, buf.Length);
if (count != 0)
{
tempString = Encoding.ASCII.GetString(buf, 0, count);
sb.Append(tempString);
}
}
while (count > 0);
return sb.ToString();
}
【讨论】: