我尝试从雅虎财经打印历史调整后的收盘价到Google Sheets。
=ImportXML("https://sg.finance.yahoo.com/quote/"&B57&"/history?p="&B57, "//tbody/tr[21]/td[6]")
细胞 B57
例如,是 "SPY"
.
这对100天以内的历史价格都能正常工作。(这里是调整过的。tr[100]
)
当我试图获取100天后的价格时,它返回 "NA".这些价格在yahoo金融上可见。
有办法调整吗?XPATH
它的工作原理?
我注意到,在yahoo pices的html代码中,大约100天没有这个 "data-reactid=1520 "的字样。tr
标签。
先谢谢你
IMPORTXML
不能检索由脚本填充的数据,所以用这个公式检索这个表的数据是做不到的。
由于前100个值是在没有使用JavaScript的情况下加载到页面中的(你可以通过禁用JavaScript来查看。)。https:/sg.financial.yahoo.comquoteSPYhistory?p=SPY。 并重新加载页面),信息可以通过以下方式检索 IMPORTXML
.
由于前100个结果之后的数据是在向下滚动页面后即时生成的,因此新的可用数据无法通过以下方式检索到 IMPORTXML
- 在公式看来。没有101舞台 <tr>
元素 所以它显示 N/A: Imported content is empty
.
我知道这一般是个坏消息,但希望对你有所帮助!
这是有可能的,有一个变通的方法。
晚于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
将时间戳转换为日期。