从 ASX 抓取当前股价数据

问题描述 投票:0回答:2

我正在尝试将当前股价数据从 ASX 抓取到 Google 电子表格中。

我没有使用

=googlefinance("ASX.NEA","price")
来表示即时延迟价格,因为决议四舍五入了细价股票的价值。

我没有使用

=INDEX(googlefinance("ASX.NEA","price", today()-10, today()),2,2)
来获取历史价格,即使解析价格是准确的,也无法获取当前价格。

  • 网址:

    https://www.asx.com.au/asx/share-price-research/company/NEA

  • xpath(xPath 查找器):

    /html/body/section[3]/article/div[1]/div/div/div[4]/div[1]/div[1]/company-summary/table/tbody/tr[1]/td[1]/span

  • 方程:

    =IMPORTXML(url, xpath)

  • 结果:#N/A 错误导入内容为空

我尝试过的其他 xpath 是:

  • x路径:
    //table/tbody//span
  • x路径:
    //span[@ng-show="share.last_price"]
  • x路径:
    //span[@ng-show="share.last_price"]

当我查看页面源代码时,最新的股价是通过javascript加载的。

示例:股价为 0.910

CHrome inspect element

google-sheets web-scraping xpath google-sheets-formula stock
2个回答
3
投票

使用 Apps 脚本 (javascript) 的替代解决方案

function AsxPrice(asx_stock) {
  var url = "https://www.asx.com.au/asx/1/share/" + asx_stock +"/";
  var response = UrlFetchApp.fetch(url);
  var content = response.getContentText();
  Logger.log(content);
  var json = JSON.parse(content);
  var last_price = json["last_price"]; 
  return last_price;
}

这比

importXML()
ImportHTML()
效率更高,因为 HTML 很臃肿,上面的 url 是一个 jsonresult。

对于其他大型证券交易所(json 源可以在以下位置找到):

欧盟 美国


0
投票

我在谷歌表格中使用上面提供的函数已经有一段时间了;函数AsxPrice

上周五晚上它下跌了。我已经玩过,该网址仍然有效,也就是说,如果您输入上面的网址和股票代码,数据就会按预期在网络浏览器中返回。如果我将内容输出到谷歌表格单元格,我会得到以下内容(仅输出的一小部分)。

"<html style="height:100%"><head><META NAME="ROBOTS" CONTENT="NOINDEX"

这是什么原因造成的。 ASX 已经阻止这一切了吗?

© www.soinside.com 2019 - 2024. All rights reserved.