Как получить файл, если нет ссылки - PullRequest
0 голосов
/ 23 октября 2018

Я собирал steamdb для университетского проекта, где я смог получить почти все, используя BeatifulSoup и urllib, но есть одна вещь, которую я не могу заставить работать, потому что на нее нет ссылок.

Есть эти диаграммы https://steamdb.info/app/570/graphs/, когда вы нажимаете на значок загрузки в правом верхнем углу графика и выбираете любой вариант загрузки, вы можете загрузить файл, но в информации тега нет ссылок, когда вы проверяете элемент.

Что я обнаружил, так это то, что есть некоторые прослушиватели событий onclick, прикрепленные к этим загруженным div и проследившие эти функции до этого js https://steamdb.info/static/js/vendor/highstock.20180826.js и в этом js, если вы ищете "highcharts-menu-item" (который является классом для тех, кто скачивает Div), вы получите ровно 1 совпадение.Но я не мог понять, как эта функция создает элемент загрузки.Так может кто-нибудь объяснить, как происходит волшебство загрузки.

1 Ответ

0 голосов
/ 23 октября 2018

Я посмотрел на вкладке сети инструментов Chrome Dev, чтобы найти следующую конечную точку 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)
        });
...