网页文本提取的简洁方法

C#中提取网页文本的任务看似复杂,但通过一些简单的方法,可以轻松实现。本文将介绍几种不依赖于复杂外部库的网页文本提取方法。

方法1:内存中的剪切和粘贴

使用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()); }

这种方法简单直接,但需要使用剪贴板,可能会受到剪贴板大小的限制。

方法2:内存中的选择对象

这是第二种处理下载的网页文本的方法。它的速度略慢(差异非常小),但避免了使用剪贴板及其相关限制。

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; }

这种方法通过创建选择对象和文本范围来提取文本,避免了剪贴板的使用。

方法3:优雅、简单、稍慢的XmlDocument方法

这是一个非常简洁的示例,由一位好友分享。虽然它的速度比其他方法慢,但其简洁性无可比拟。

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项目供下载。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485