使用XPath解析HTML获取网页内容
有的时候,我们开发的应用需要抓取网页的内容借为己用,如QQ网站的天气信息和新闻等,和Google等搜索爬虫的机制不同之处在于抓取目标的页面对开发人员而言是已知的。我们有理由避免过多的使用正则表达式的繁冗分析过程,如果能够在获取目标网页的HTML之后通过DOM来解析HTML将是一件非常愉快的事情。这里会遇到两个问题,DOM操作只能在客户端通过Javascript或VBScript等脚本语言进行,加上HTML自身不是非强格式的,不能使用类似XSL对XML解析的方式进行操作。不过既然写这篇Blog,就一定有了解决的办法J。
非常感谢Microsoft的XML大师Chris Lovett为我们带来的SgmlReader这个开源的项目。我们知道,XML和HTML都是Sgml的子集。通过SgmlReader,能够将HTML转换生成格式规范的HTML(Well-Formed HTML,虽然没有这个称呼,但这里暂且这么说),从而可以使用XML的XPath语法读取网页的数据了。那么在.NET Framework下,我们遇到的问题变得如此轻松。
简单写了一个示例程序,用来抓取QQ网站的天气信息,通过更改城市名称和XPath获得网页内容。
代码:下载
PS:除了SgmlReader之外,还有Simon Mourier的.NET Html Agility Pack也具有类似的功能。
posted on 2005-02-06 01:05 Microtoby 阅读(6447) 评论(14) 编辑 收藏 举报