【问题标题】:XPath YQL get only specific columnsXPath YQL 仅获取特定列
【发布时间】:2013-09-18 17:01:01
【问题描述】:

您好,我有一个 html 页面,我想使用 YQL 查询/“抓取”。 我只想从该 html 页面上的 table 标记中获取四列文本,但我不知道如何使用 XPath 来表示它。

我通过右键单击 Chrome 中的单元格来定位其中一个单元格,检查元素并复制 xpath,这是我仅针对该单元格获得的结果。

//*[@id="partsTable"]/tbody/tr[1]/td[8]/text()

这就是第 1 行第 8 列的表达式。 实际上,我想获取 5、6、8、9 列中内容的所有行。我不知道是否可以轻松地在 XPath 中编写它。

非常感谢您的帮助。 (我对 XPath 完全陌生,因此不胜感激)

【问题讨论】:

  • 如果您提供输入 HTML 和所需输出的示例,将会有所帮助。

标签: html xml xpath yql


【解决方案1】:

使用position()查询元素的索引。

//*[@id="partsTable"]/tbody/tr/td[5 <= position() and position() <= 9]/text()

在浏览器中使用开发人员工具获取 XPath 表达式时要小心,请查看“Why does my XPath query (scraping HTML tables) only work in Firebug, but not the application I'm developing?”。

【讨论】:

    【解决方案2】:

    您可以使用类似于SQL的IN的语法查询特定位置:

    [position() = (5, 6, 8, 9)]
    

    所以你的完整表达是:

    //*[@id="partsTable"]/tbody/tr[1]/td[position() = (5, 6, 8, 9)]/text()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多