dom - 与importXML一起使用的XPath表达式

标签 dom xpath google-sheets google-sheets-formula google-sheets-importxml

我正在尝试从网站https://www.google.co.uk/finance?cid=704531导入字段“ Range”和“ 52 week”以及该组中的其他字段。我看过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表达式是什么?

最佳答案

Dom和<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]")

关于dom - 与importXML一起使用的XPath表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17360217/

相关文章:

qt - 如何跟随QWebKit中的链接?

xpath - 可以在已编码的ui测试中使用xpath来定位Web元素吗?

python - 无法从网页解析 "First name"

google-sheets - Google表格-条件格式覆盖背景颜色

javascript - 使用for循环动态添加div元素

javascript - Jquery .empty() 前 2 个元素

javascript - 在javascript中动态写入对象时如何注册DOM id?

xml - 如何使用 SXD-XPath 选择命名空间属性的值?

google-apps-script - 接收 Gmail 邮件时如何触发插入 Google 表格?

google-sheets - Google 表格 - 查询包含数组