大家好,今天来分享一下在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代码的例子,欢迎大家补充指正。