来自网站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表达式是什么?
答案 0 :(得分: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]")