Я разбирал 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 совпадение. Но я не мог понять, как эта функция создает элемент загрузки. Так может кто-нибудь объяснить, как происходит магия загрузки.
Я просмотрел вкладку сети инструментов 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>
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)
});
{}
. Вы также можете найти в этом симпатичном печатном коде «CSV», который сузит генерацию файла CSV. Удачи :)
HighCharts
строит графики на лету и создает временные изображения в браузере - с этим не связано никаких физических файлов ... Вам понадобится возможность эффективно «запускать» JavaScript, чтобы получить HighCharts графики.