从通过 DataTables 和 Ajax 进行服务器端数据处理的网站抓取数据

Data scraping from a website that does a server-side data processing via DataTables and Ajax

我正在尝试从执行服务器端数据获取和按需加载数据(向下滚动 table)的网站自动执行数据 scraping 过程。通过使用 DevTools 进行一些谷歌搜索和查看他们的网站代码,我了解到 this functionality 正在使用 JS 和 ajax 将数据推送到 table。从服务器提取数据的 api link 很可能位于 php 脚本中,无法获取。

我想知道是否有可能以某种方式自动执行此提取过程 (Python/R),这样我就不必手动滚动数小时并将数据复制粘贴到 Excel 文件中?

https://www.deribit.com/ 正在使用网络套接字提取数据,不涉及 ajax。当到达 table 的末尾时,将触发一个触发此函数的事件:

// found in btc-options.js
scrollTradesC: function () {
        var box = $('#tradesScrollC'), t;
        if (isTradesScrollingC) {
            return;
        }
        if (box.scrollTop() + box.innerHeight() >= 0.7*box[0].scrollHeight) {
            isTradesScrollingC = true;
            t = lastTradeCallId;
            if (t != 0) {
                reMoreTradesCall(t);
            } else {
                reMoreTradesCall(0);
            }
        }
    }

接下来,reMoreTradesCall函数运行:

reMoreTradesCall = function(data)
{
    if (validateSources([]))
        ws.send(enc(tuple(atom('pickle'), bin('document'), bin('... my token ...'), utf8_toByteArray(JSON.stringify(data)))));
    else
        console.log('Validation Error');
}

您可以在 main_bullet.js

中找到网络套接字实现

在 Web 检查器的“网络”选项卡下观察 v2/ 网络连接,以查看请求和响应帧负载。

相关请求URL为wss://www.deribit.com/ws/api/v2/,方法为public/get_trade_volumes