google-sheets - 将雅虎金融股票价格刮到谷歌表格
问题描述
所以我可以用这条线让 xpath 为像 CVNA 这样的“主流”股票工作:
=REGEXEXTRACT(INDEX(IMPORTXML("https://finance.yahoo.com/quote/CVNA?p=CVNA";"//*[@id='quote-header-info']");;3); "\d+.\d+|\d+")+0
但是当试图指向像奥斯陆交易所这样的特定交易所时,我得到了一个错误。想从 NEL.OL 上刮股票价格
有什么建议么?
解决方案
由于页面是在客户端而不是在服务器端使用 javascript 构建的,因此您将无法通过 importxml / importhtml 函数检索数据。但是,该页面包含一个 json,您可以检索和分析它以检索您需要的信息。
var source = UrlFetchApp.fetch(url).getContentText()
var jsonString = source.match(/(?<=root.App.main = ).*(?=}}}})/g) + '}}}}'
var data = JSON.parse(jsonString)
例如,对于市场价格,您可以通过以下方式检索信息
function marketPrice(code) {
var url='https://finance.yahoo.com/quote/'+code
var source = UrlFetchApp.fetch(url).getContentText()
var jsonString = source.match(/(?<=root.App.main = ).*(?=}}}})/g) + '}}}}'
var data = JSON.parse(jsonString)
var regularMarketPrice = data.context.dispatcher.stores.StreamDataStore.quoteData[code].regularMarketPrice.raw
return regularMarketPrice
}
https://docs.google.com/spreadsheets/d/1sTA71PhpxI_QdGKXVAtb0Rc3cmvPLgzvXKXXTmiec7k/copy - G 列
推荐阅读
- javascript - pendo 跟踪 - 如何仅跟踪 pendo 跟踪工具复选框上的检查操作
- elasticsearch - 通过 Ingress Controller 暴露 Elastic APM
- yocto - Yocto中如何基于机器添加多个用户
- terraform - 跳过 terragrunt 信息输出
- c++ - 如何在 C++ 文件中存储文本以外的数据
- c# - 无法看到异常的错误消息,打印时(e.Message)它只打印错误代码(如 404 或 400)而不是消息
- vb.net - Crystal 报表查看器在运行时不断询问登录 ID 和密码
- flutter - _AssertionError 断言失败:第 1871 行 pos 16:'constraints.hasBoundedHeight':不正确
- python - 使用常量作为主机/ ip 地址在使用字符串时失败,为什么?
- python - Pyton 3.7 - Raspberry Pi OS - Subprocess.run 错误和输出捕获