从通过 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
。
我正在尝试从执行服务器端数据获取和按需加载数据(向下滚动 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
。