我正在尝试从网站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/