大家好,今天來分享一下在ASP.NET中如何通過正則表達式的使用來獲取HTML的信息。 如我們所知,網頁中經常會包含一些非常有用的信息,比如網頁標題(title),文本(text),圖片(image),鏈接(link),表格(table),一些搜索引擎的工程師很可能需要關注這方面的信息,通常他們需要在網頁中查詢一些關鍵字,圖片等信息。
這裏介紹一下怎麼在.NET中通過正則表達式快速的獲取這些信息, 我們需要在VS2010中建立一個空的web應用程序:
首先需要製作一個源頁面,本頁面包含一些基本信息,也就是需要獲取信息的源頁面,這裏這個頁面包括文本,腳本,圖片和鏈接等信息。
[本示例完整源碼下載(0分)] http://download.csdn.net/source/3450356
在本項目中頁面的頭部都需要設置AutoEventWireup屬性,
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SourcePage.aspx.cs" Inherits="CSASPNETStripHtmlCode.SourcePages" %>
AutoEventWireup 屬性被設置爲 true時該頁框架將自動調用頁面的事件,在本例中如果不這樣設置,第二次執行獲取HTML代碼的方法將會失敗。
SourcePage.aspx
添加一個Default.aspx頁面 我們將從這個頁面中訪問SourcePage並從中提取需要的信息, 先來看看它的頁面信息,包括一個多行的TextBox和幾個Button,Button用於獲取頁面的資源信息並且置於TextBox中. 同樣,在頁面頭部的page信息也將加上AutoEventWireup屬性:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CSASPNETStripHtmlCode.Defaults" %>
Default.aspx (HTML):
最後一步,就是寫正則表達式獲取HTML代碼的方法了。
首先我們需要的獲取整個頁面的HTML代碼,通過HttpWebRequest和HttpWebResponse類訪問源頁面的代碼並用StreamReader讀取並返回string類型的變量。
接着我們可以對HTML代碼進行解析和截取,本例中btnRetrievePureText用於獲取純文本,btnRetrieveSriptCode用於獲取腳本信息(不常用),btnRetrieveImage用於獲取圖片信息,btnRetrievelink用於獲取鏈接,當然你可以改變正則表達式的內容和方法,獲取你想要的其他信息:
下面是完整代碼
Default.aspx.cs
本例中的兩個重點:
第一,介紹如何使用WebRequest.Create()和WebResponse.GetResponseStream()獲取Web page內容,通過StreamReader.ReadToEnd()方法返回HTML字符串。
第二,使用Regex.Match()和Regex.Replace()兩個基本的方法,獲得指定的內容。至於正則表達式的寫法這裏就不詳細介紹了,可以從網上查看到很多這方面的信息。
這只是一個簡單的獲取和解析HTML代碼的例子,歡迎大家補充指正。