当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 使用正则表达式解析的初步体会(固定格式网页解析)

ASP.NET
XPath序列之二
COM与基于组件技术的开发和应用模式(一)
What is XAML?
浅析ASP.NET FORUMS中缓存机制的应用
MetaBuilders在ASP.NET FORUMS2.0中的应用方法
走进C# (我的C#学习之旅)之三
数据库连接字符串的小技巧
两个窗体之间传值
Oracle 数据库中的 empty string 处理
IronPython中没有System.Data命名空间?
Crystal Report's BUG?
使用Windows API函数显示打开文件对话框
vb.net高手请进
Comega
枚举学习案例
XML 属性顺序
自定义文档库之---扩展文档库字段
how to send email by jmail?
Oracle数据库Date类型字段读写经验
VB之Win32 API编程--判断本地或远程文件是否存在的简易方法

ASP.NET 中的 使用正则表达式解析的初步体会(固定格式网页解析)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 81 ::
收藏到网摘: n/a

用IE WebControl解析网页得到特定网页中的特定数据:
Set oDocument = Form2.m_IE.Document
Set oelement = oDocument.Forms("searchdetail")
Set oListTableElement = oelement.children(0).children(0)
这样的好处是简单,但坏处是:如何读取以及节点值究竟是什么含意这些信息,不太好抽取出来放到外面,作为灵活配置的文件。
因为它属于一个Childnodes一个Childnodes这么遍历的,无法灵活设定深度以及含义。
又体验了一把正则表达式,专门处理了北京式门户的站点HTML,由于北京式门户的12个省总排行榜页面中总包含这样的固定代码:




发现下面的式子可以把一系列值解析到一个又一个的MatchCollection中。
我用的是"The Regulator"工具,试验结果如下:
也就是Collection“hiddentonenames”总是XX名的集合,按序排列;
Collection“hiddenspnames”总是XX名的集合,按序排列;
Collection“hiddensingers”总是XX名的集合,按序排列;
以此类推。
在C#中,可以用如下代码得到各个集合的值:
foreach(Match match in matchCollection)
{
Group groupToneNames = match.Groups["hiddentonenames"];
Group groupSpNames = match.Groups["hiddenspnames"];
Group groupSingers = match.Groups["hiddensingers"];
}
这样,我可以针对这各种门派的Portal风格写出专门的正则表达式,但让他们输出的Collections名字都是一样的,从而让获取

一个铃声的各个字段的代码固定下来。
以后更新,只需要修改各个门派的正则表达式即可。
感谢王辉的《Web页面爬行实践》精彩文章!