【问题标题】:Adding export-to-csv option onto Highcharts chart as a client user?作为客户端用户将导出到 csv 选项添加到 Highcharts 图表?
【发布时间】:2018-08-07 08:56:44
【问题描述】:

虽然有关于这个问题的文档,但我发现自己正经历着巨大的悲伤,试图了解需要做什么才能实现我想要的。

我是一个没有权限访问具有要导出到 csv 的 Highcharts 图表的网站的用户。来自这个 url 和域中类似网页的 Highcharts 是我要导出的:

https://www.racingandsports.com.au/horse/taiyoo-660888-tab-rating

具体来说,我想要第一张图表。如您所见,它有一个下拉菜单,允许打印图像,并以 jpeg、png、pdf 和 svg 格式下载。我已经看到 JSFiddle 代码 sn-ps 下拉菜单有一个导出到 csv 选项。我尝试使用脚本运行 Greasemonkey 以及通过 Web 浏览器上的检查元素菜单进行编辑。我在 Ubuntu 上使用 Firefox。

作为客户端是否可以实现,或者如果我想获取这些数据,我应该使用 beautifulsoup 程序编写自己的 Python 来抓取它吗?

【问题讨论】:

    标签: javascript highcharts export-to-csv


    【解决方案1】:

    这个过程有点棘手,因为站点使用 Highcharts v4.0.4,并且可以从 v5.0.11 导出到 CSV,但我可以不要说不可能做到这一点。

    您需要从浏览器开发者控制台手动添加export-data.js Highcharts 模块的主体,但首先您需要通过一些运行该模块所需的函数和参数来扩展 Highcharts。我将尝试逐步描述该过程,并且尽可能清晰。

    1. 打开网站,
    2. 打开浏览器的开发者控制台
    3. 将以下代码粘贴到控制台中,然后按 Enter 键:

      Highcharts.win = window;
      Highcharts.inArray = function(item, arr, fromIndex) {
        return (
          Highcharts.indexOfPolyfill ||
          Array.prototype.indexOf
        ).call(arr, item, fromIndex);
      };
      Highcharts.find = function(arr, fn) {
        var i,
        length = arr.length;
      
        for (i = 0; i < length; i++) {
          if (fn(arr[i], i)) {
            return arr[i];
          }
        }
      };
      
    4. 然后,只需打开 https://code.highcharts.com/5.0.11/modules/export-data.src.js ,复制整个代码,将其粘贴到控制台并运行它。

    现在您应该可以通过打开下拉菜单并单击顶部列表中的第一个“未定义”来下载 CSV。

    我测试了它,它正在工作。

    【讨论】:

    • 天哪,你真是个天才小伙子!效果很好。返回距离、评分、平均评分和获胜者。我确信我可以修改提供的代码以获取其他变量,但您提供的正是我想要的。非常感谢。
    • 当然你可以通过开发者控制台update所有图表,因为Highcharts库是全球可用的。所有图表都在Highcharts.chartsarray 中。
    猜你喜欢
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2012-04-13
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多