如何将奥斯陆交易所股票价格从Bloomberg导入Google Sheets?
奥斯陆交易所股票导入Google Sheets的可行方案
我太懂这种卡壳的感觉了——奥斯陆交易所的股票确实不在Google Finance的支持范围内,之前你试的IMPORTXML失效,大概率是因为Bloomberg的页面结构改了,或者人家的反爬机制把请求拦住了。给你两个亲测可行的方案,你可以挨个试试:
方案一:自定义Google Apps Script函数(最稳定)
这个方法通过写简单的脚本直接从奥斯陆交易所官网抓数据,比公式更不容易被反爬,也更灵活:
- 打开你的Google Sheet,点击顶部菜单栏的「扩展程序」→「Apps Script」
- 把编辑器里默认的代码删掉,粘贴下面的脚本:
function getOsloStockPrice(ticker) { // 拼接奥斯陆交易所的股票详情页URL var url = "https://www.oslobors.no/markedsaktivitet/#/instrument/" + ticker + "/overview"; // 模拟浏览器请求头,避免被反爬拦截 var response = UrlFetchApp.fetch(url, { headers: {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"} }); var html = response.getContentText(); // 用正则提取价格(匹配页面里的价格元素) var priceMatch = html.match(/<span class="instrument-price__value">([\d,.]+)<\/span>/); if (priceMatch && priceMatch[1]) { // 把挪威式的逗号小数点转成标准格式,返回数字 return parseFloat(priceMatch[1].replace(",", ".")); } else { return "数据获取失败,请检查股票代码"; } } - 点击编辑器顶部的「保存」,给脚本起个名字(比如
OsloStockFetcher),然后授权(第一次运行会提示权限,按步骤允许即可) - 回到Sheet里,输入
=getOsloStockPrice("GJF")就能获取GJF:NO的价格了(这里只用股票代码前缀,不用加:NO)
如果之后奥斯陆交易所的页面结构变了,只需要调整脚本里的正则表达式就能继续用。
方案二:用IMPORTHTML抓取第三方金融站点数据
如果不想写脚本,可以试试这个公式,用公开的第三方金融站点数据:
=INDEX(IMPORTHTML("https://www.investing.com/equities/" & SUBSTITUTE(A1, ":NO", ""), "table", 1), 2, 2)
操作说明:
- 把A1替换成你存放股票代码(比如
GJF:NO)的单元格 - 公式会自动去掉
:NO后缀,抓取页面里的价格表格,提取第二行第二列的当前价格
注意:第三方站点的页面结构可能会更新,如果公式失效,需要调整INDEX里的行号和列号。
额外提醒
不管用哪种方法,都不要过于频繁地刷新数据(比如设置每分钟自动刷新),避免被目标网站封禁IP;如果某一天突然失效,大概率是目标网站改了页面结构,调整脚本的正则或者公式的索引位置即可。
内容的提问来源于stack exchange,提问作者xryxr
相关产品推荐
相关产品推荐

