1

从网站https://www.google.co.uk/finance?cid=704531我正在尝试导入字段“范围”和“52 周”以及中间该组中的其他字段。我看过 XPath 并对此感到非常困惑。

在单元格 A1 中,我有https://www.google.co.uk/finance?cid=704531.

在单元格 B1 我有

=importxml(A1,//*[@id="market-data-div"]/div[2]/div[1]/table[1]/tbody/tr[4]/td[1])

但结果是错误的。

这个 HTML 结构的正确 XPath 表达式是什么?

4

1 回答 1

4

多姆和<tbody/>

您似乎在 Firebug 或类似的开发人员工具中创建了该 XPath 表达式。虽然 HTML 不需要<tbody/>标签,但 DOM 需要;并且这些开发人员工具在 DOM 上工作,因此将表格行包装在这样的元素中。查看页面源代码(wget必要时由其他工具获取)和 Firebug 呈现的结构时,您可以轻松看出差异。

只需省略/tbody表达式中的轴步骤:

//*[@id='market-data-div']/div[2]/div[1]/table[1]/tr[4]/td[1]

无论如何,我宁愿通过描述来获取单元格,这对于措辞的变化有点弱,但对结构的变化更加健壮:

//*[@id='market-data-div']//tr[td = 'Vol / Avg.']/td[2]

引用表达式

第二个问题是您必须在双引号中引用 XPath 表达式,因此例如使用:

=importxml(A1,"//*[@id='market-data-div']//tr[td = 'Vol / Avg.']/td[2]")
于 2013-06-28T08:57:25.790 回答