使用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 阅读(6456) 评论(14) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库