Google Sheets中IMPORTXML获取FT ETF价格成功但股票价格失败求排查
问题原因及解决办法
核心原因
你用的是绝对层级XPath,Financial Times的ETF页面和股票页面HTML结构完全不同,硬编码的DOM层级(比如div[3]、section[1])在股票页面不对应价格元素,所以抓取失败。
具体解决步骤
改用基于元素属性的相对XPath
相对路径不依赖页面层级结构,只看元素本身的特征,稳定性强。针对你提供的股票页面,可用以下两种XPath尝试:- 直接定位价格区块的元素:
=importxml("https://markets.ft.com/data/equities/tearsheet/summary?s=HINDUNILVR:NSI","//div[contains(@class, 'mod-tearsheet-overview__price')]/span[@class='mod-ui-data-list__value']") - 定位"Last price"标签对应的价格:
=importxml("https://markets.ft.com/data/equities/tearsheet/summary?s=HINDUNILVR:NSI","//li[contains(text(), 'Last price')]/span[@class='mod-ui-data-list__value']")
- 直接定位价格区块的元素:
验证XPath的实用方法
打开目标页面按F12打开开发者工具,在控制台输入$x("你的XPath"),如果能返回对应的价格元素,再放到Google Sheets里测试,避免无效尝试。后续维护注意
FT的页面结构可能会更新,若以后再次失效,重复上述步骤,重新抓取最新的元素属性编写XPath即可。
内容的提问来源于stack exchange,提问作者ankitkja
相关产品推荐
相关产品推荐

