在C#中提取网页文本的任务看似复杂,但通过一些简单的方法,可以轻松实现。本文将介绍几种不依赖于复杂外部库的网页文本提取方法。
使用WebBrowser控件对象处理网页,然后从控件中复制文本。以下是下载网页的代码示例:
WebBrowser wb = new WebBrowser();
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DisplayText);
wb.Url = urlPath;
以下是处理下载的网页文本的事件代码:
private void DisplayText(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser wb = (WebBrowser)sender;
wb.Document.ExecCommand("SelectAll", false, null);
wb.Document.ExecCommand("Copy", false, null);
textResultsBox.Text = CleanText(Clipboard.GetText());
}
这种方法简单直接,但需要使用剪贴板,可能会受到剪贴板大小的限制。
这是第二种处理下载的网页文本的方法。它的速度略慢(差异非常小),但避免了使用剪贴板及其相关限制。
private void DisplayText(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser wb = (WebBrowser)sender;
IHTMLDocument2 htmlDocument = wb.Document.DomDocument as IHTMLDocument2;
wb.Document.ExecCommand("SelectAll", false, null);
IHTMLSelectionObject currentSelection = htmlDocument.selection;
IHTMLTxtRange range = currentSelection.createRange() as IHTMLTxtRange;
textResultsBox.Text = range.text;
}
这种方法通过创建选择对象和文本范围来提取文本,避免了剪贴板的使用。
这是一个非常简洁的示例,由一位好友分享。虽然它的速度比其他方法慢,但其简洁性无可比拟。
XmlDocument document = new XmlDocument();
document.Load("www.yourwebsite.com");
string allText = document.InnerText;
XmlDocument对象可以加载/处理HTML文件,只需三行简单的代码。
最近使用了WatiN网页应用测试包来获取网站文本。WatiN不是设置起来最简单的包,因为它需要引用WatiN核心DLL、Microsoft.mshtml、windows.forms,然后还需要在项目中包含几个额外的类。但是,一旦设置完成,它产生的结果非常稳定且易于使用。实际上,只需三行代码就可以获取网站文本:
var browser = new MsHtmlBrowser();
browser.GoTo("www.YourURLHere.com");
commandLog.Text = browser.Text;
已经包含了一个简单的Visual Studio ASP.NET项目供下载。