【发布时间】:2013-09-08 06:13:33
【问题描述】:
问题在标题中,但更具体:我可以从 HTML 中获取以特定文本开头的 URL 吗?可能是,有没有用 JQuery 风格提取的案例?
$( "a[href^='event_handler']" )
【问题讨论】:
标签: c# html parsing url html-agility-pack
问题在标题中,但更具体:我可以从 HTML 中获取以特定文本开头的 URL 吗?可能是,有没有用 JQuery 风格提取的案例?
$( "a[href^='event_handler']" )
【问题讨论】:
标签: c# html parsing url html-agility-pack
开箱即用的库不支持 jquery 类型选择器(这些是 CSS 选择器,仅供参考),但仅支持 XPATH 或 XSLT 选择器。当然,也有好心人花时间为 CSS 选择器支持添加了扩展,请参阅 Add CSS Selector Query Engine onto HTMLAgilityPack。
添加这个,您可以使用您自己提供的字符串选择器来选择您的链接。
【讨论】:
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')]
【讨论】:
你也可以使用 linq
doc.DocumentNode.SelectNodes("//li").Where(x => x.FirstChild.Attributes["href"].Value.StartsWith("event_handler")).Select(x => x.FirstChild.Attributes["href"].Value).ToList();
【讨论】: