【问题标题】:Xpath and wildcardsXpath 和通配符
【发布时间】:2011-08-02 05:32:07
【问题描述】:

我尝试了几种组合都没有成功。该数据的完整 xpath 是.//*[@id='detail_row_seek_37878']/td 问题是每个节点的数字部分“37878”发生变化,因此我不能使用 foreach 循环遍历节点。有没有办法使用通配符并将xpath减少到.//*[@id='detail wildcard,以绕过绝对值部分?我正在使用 html 敏捷包。

 HtmlNode ddate = node.SelectSingleNode(".//*[@id='detail_row_seek_37878']/td");

【问题讨论】:

    标签: c# xpath screen-scraping html-parsing html-agility-pack


    【解决方案1】:

    提取不变的部分:

    //*[starts-with(@id, 'detail_row_seek')]/td
    

    相关技术和功能

    匹配id属性包含字符串_row_第7个字符的元素:

    //*[substring(@id, 7, 5)='_row_']/td 
    

    匹配id属性包含文本detail_在任意位置的元素:

    //*[contains(@id, 'detail_')]/td 
    

    匹配id属性文本detail_row_seek结尾的元素:

    //*['detail_row_seek' = substring(@id, 
            string-length(@id) - string-length('detail_row_seek') + 1)]/td 
    

    【讨论】:

    • 感谢您的回复,您能给我解释一下 1 和 15 代表什么吗?我想把它缩短到只是细节,1,6 不起作用。
    • @JRB - 他们确定了所需子字符串的位置。但是,我很傻,一分钟都忘记了starts-with。查看我的更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2023-01-13
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多