我已经将整个网页的html保存为字符串,现在我想从链接中获取"href"值,最好能够将它们保存到不同的字符串中.最好的方法是什么?
我已经尝试将字符串保存为.xml文档并使用XPathDocument导航器解析它,但是(惊喜)它并没有很好地导航非真正的xml文档.
正则表达式是实现我想要实现的目标的最佳方式吗?
我可以推荐HTML Agility Pack.我在一些需要解析HTML的情况下使用过它并且效果很好.将HTML加载到其中后,您可以使用XPath表达式查询文档并获取锚标记(以及其中的任何其他内容).
HtmlDocument yourDoc = // load your HTML; int someCount = yourDoc.DocumentNode.SelectNodes("your_xpath").Count;
正则表达式是一种方法,但它可能会有问题.
大多数HTML页面都无法使用标准的html技术进行解析,因为正如您所知,大多数HTML页面都没有验证.
您可以花时间尝试集成HTML Tidy或类似工具,但只需构建所需的正则表达式会快得多.
UPDATE
在此次更新时,我收到了15个up和9个downvotes.我想也许人们不是在阅读这个问题,也不是对这个答案的评论.OP想要做的就是获取href值. 而已. 从这个角度来看,一个简单的正则表达式就好了.如果作者想要解析其他项目,那么就像我在开始时所说的那样,我无法推荐正则表达式,这在最好的情况下是有问题的.
为了处理各种形状和大小的HTML,我更喜欢使用HTMLAgility包@ http://www.codeplex.com/htmlagilitypack,它允许您针对所需的节点编写XPath并在集合中获得返回.