HtmlAglityPack使用心得
这学期的软件工程课,几个团队合作一个比较大的项目,然后我们团队主要负责爬虫获得的数据的处理,抽取元数据,去重等工作。因为不知道爬虫得到的数据具体是什么样子的,所以我们的工作还要能够对得到的html文档能够做一个解析,我主要负责这一块的工作。
因为html不是一种对语法要求不是特别严格的标记语言,所获得的一个html的文件中可能就会存在各种各样的问题,比如一个标签没有闭合,所以在解析的过程中所面对的情况的复杂度就比较大。通过在网络上查找资料,最终我还是选择了采用开源的HtmlAglityPack来解析html网页。
HtmlAglityPack将html我网页建立成一棵DOM树,然后我们就可以通过Xpath来对每个节点进行访问,下面就主要介绍一下我做项目的过程中使用到的一些方法:
- Html的读取
HAP会对读取到的html保存到HtmlDocument类中,HtmlDocumen内部是一个DOM树(DOM是文档对象模型),对于HtmlDocument的读入有很多方法。我主要使用的是:
1 StreamReader sr = new StreamReader("in.html"); //保存在文件中 2 HtmlDocument htmlDocument = new HtmlDocument(sr);
HAP提供了多种重载方式,其中一些常使用到的有:
1 htmlDocument.Load(string path); // 从文件读取 2 htmlDocument.Load(Stream stream); // 从输入流 3 htmlDocument.Load(TextReader textReader); 4 htmlDocument.LoadHtml(string htmlString);