HTML Agility pack - 如何获取以特定文本开头的URL?

时间:2013-09-04 16:12:12

标签: c# html parsing url html-agility-pack

问题出在标题中,但更为具体:我可以从HTML获取URL,该URL以特定文本开头吗?可能是,有任何案例要以JQuery风格提取吗?

$( "a[href^='event_handler']" )

3 个答案:

答案 0 :(得分:1)

开箱即用的库不支持jquery类型选择器(那些是CSS选择器FYI),但只支持XPATHXSLT选择器。当然有好人花时间并添加了CSS选择器支持的扩展,请参阅Add CSS Selector Query Engine onto HTMLAgilityPack

添加此项,您可以使用自己已经提供的字符串选择器选择链接。

答案 1 :(得分:1)

HTMLAgilityPack基于使用XPath查询,而不是CSS选择器(这是您原始帖子中的内容)。

如果你绝对必须使用CSS选择器,那么过去我用过的工具叫做Fizzler:

https://code.google.com/p/fizzler/

它位于HTMLAgilityPack之上,因此大部分文档都保持不变。

我也说你的问题有点令人困惑。你的CSS选择器根据它的href 选择一个值,但是你提到你想要选择它的text - 这是不同的。以下是您原始选择器的直接等价物:

//a[starts-with(@href, 'event_handler')]

但是,要匹配实际的文字,而不是href,那就是:

//a[starts-with(text(), 'event_handler')]

答案 2 :(得分:0)

您也可以使用linq

doc.DocumentNode.SelectNodes("//li").Where(x => x.FirstChild.Attributes["href"].Value.StartsWith("event_handler")).Select(x => x.FirstChild.Attributes["href"].Value).ToList();