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

时间:2020-02-09 20:06:59

标签: javascript websocket screen-scraping

我正在尝试从网站进行数据抓取过程自动化,该网站进行服务器端数据提取并按需加载数据(向下滚动浏览该表)。通过进行一些搜索和通过DevTools查看其网站代码,我了解到this functionality被用于使用JS和ajax将数据推入表中。从服务器提取数据的api链接很可能位于php脚本中,无法获取。

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

1 个答案:

答案 0 :(得分:1)

https://www.deribit.com/使用Web套接字提取数据,不涉及Ajax。到达表的末尾时,将触发一个事件,触发该功能:

// 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套接字实现。

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

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