C#使用正則表達式提取網頁中的信息數據

大家好,今天來分享一下在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代碼的例子,歡迎大家補充指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章