【问题标题】:HTML Agility pack - How to get URLs, which start with specific text?HTML 敏捷包 - 如何获取以特定文本开头的 URL?
【发布时间】:2013-09-08 06:13:33
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    添加这个,您可以使用您自己提供的字符串选择器来选择您的链接。

    【讨论】:

    • 很高兴我能帮上忙! :)
    【解决方案2】:

    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')]
    

    【讨论】:

    • 你说得对,我的问题不准确。但是在谷歌上搜索时,我发现原来的 Fizzler 相当老了,而 Fizzler Ex 看起来更年轻。
    【解决方案3】:

    你也可以使用 linq

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

    【讨论】:

      猜你喜欢
      • 2013-02-28
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      相关资源
      最近更新 更多