【问题标题】:Searching HTML document by ID using XPATH returns wrong result使用 XPATH 按 ID 搜索 HTML 文档返回错误结果
【发布时间】:2018-02-05 02:10:30
【问题描述】:

所以,我想从第 200 行获取这个元素

<p id="Para">Hello, how are you.</p>

为此,我使用 XPATH

HtmlDoc.DocumentNode.SelectSingleNode("//*[contains(@id,'Para')]")

但是,返回的节点不是我要查找的节点,而是在第 10 行获取它之前的一个元素

<p id="ParaInstruction">Click here to begin</p>

我认为这是因为 id 的前 4 个字符是共同的,所以它会得到它可以找到的第一个字符。如何确保返回的节点仅具有 XPATH 中指定的字符。

【问题讨论】:

  • 一个很常见的错误,使用 contains() 却不了解它的作用!永远不要试图从函数名称中猜测函数的语义。

标签: html xpath web-scraping html-agility-pack


【解决方案1】:

改变

//*[contains(@id,'Para')]

//*[@id='Para']

避免匹配@id 包含 "Para" substring 的每个元素,这就是contains() 所做的——测试是否包含子字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-10
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多