如果没有链接,如何获取文件

时间:2018-10-23 19:44:44

标签: javascript web-scraping beautifulsoup urllib

我当时正在为一个大学项目抓取steamdb,在那里我可以使用BeatifulSoup和urllib获得几乎所有东西,但是有一件我无法工作的事情,因为没有链接。

有这些图表https://steamdb.info/app/570/graphs/,当您单击图表右上方的下载图标并选择任何一个下载选项时,都可以下载文件,但是当您检查元素时,标记信息中没有链接。

我发现,有一些onclick事件侦听器附加到这些下载div,并将这些函数跟踪到此js https://steamdb.info/static/js/vendor/highstock.20180826.js,如果您搜索“ highcharts-menu-item”(在该js中,那些下载div的课程),您将获得1个匹配项。但是我不知道该功能如何产生下载项目。任何人都可以解释一下下载魔术是如何发生的。

1 个答案:

答案 0 :(得分:2)

我在chrome开发工具的“网络”标签中查找了以下API端点(点击“响应”标签以查看JSON数据): https://steamdb.info/api/GetGraph/?type=concurrent_max&appid=570

哪个与该元素匹配:

<iframe src="https://steamdb.info/embed/?appid=570" height="389px" width="100%" scrolling="no" frameborder="0"></iframe>

viewing network tab

        a.Chart.prototype.getCSV = function(a) {
        var f = ""
          , h = this.getDataRows()
          , d = this.options.exporting.csv
          , l = m(d.decimalPoint, "," !== d.itemDelimiter && a ? (1.1).toLocaleString()[1] : ".")
          , e = m(d.itemDelimiter, "," === l ? ";" : ",")
          , p = d.lineDelimiter;
        c(h, function(a, d) {
            for (var c, g = a.length; g--; )
                c = a[g],
                "string" === typeof c && (c = '"' + c + '"'),
                "number" === typeof c && "." !== l && (c = c.toString().replace(".", l)),
                a[g] = c;
            f += a.join(e);
            d < h.length - 1 && (f += p)
        });