我试图打印历史调整后的收盘价,从雅虎金融到谷歌单张。
=ImportXML("https://sg.finance.yahoo.com/quote/"&B57&"/history?p="&B57, "//tbody/tr[21]/td[6]")例如,单元格B57是"SPY"。
这是很好的历史价格,最高可达100天。(在此进行调整:tr[100])
当我试图在100天后得到价格时,它会返回"N/A“。这些价格在雅虎金融上是可见的。
有什么方法可以调整XPATH的工作吗?
我注意到,在雅虎的html代码中,大约100天的tr标记中没有这个"data-reactid=1520“。
发布于 2020-05-06 14:37:33
这是不可能的,因为雅虎网站使用了JavaScript元素--无限大滚动--在第100次值之后开始,这就是为什么你不能越过这个点的原因。您可以通过禁用给定站点的JS来测试这一点,剩下的可以被刮除:

发布于 2020-05-06 16:52:34
这是有可能的解决办法:

100天后:

使用的公式:
=IMPORTXML(A1;"substring-before(substring-after(//script[@id='fc'],'{""prices"":'),',""isPending')")
=SUBSTITUE(SUBSTITUE(SUBSTITUE(A3;"},{";"|");",";";");".";",")
=REGEXREPLACE(A4;"[a-z:{}\[\]""]+";"")
=TRANSPOSE(SPLIT(A5;"|"))
=(((C8/60)/60)/24)+DATE(1970;1;1)IMPORTXML导入数据。SUBSTITUE和REGEXREPLACE准备TRANSPOSE步骤。TRANSPOSE用于“构建”行,SPLIT用于“构建”列。DATE将时间戳转换为日期。https://stackoverflow.com/questions/61636468
复制相似问题