即,所有资源(包括视频/媒体)下载的数据总量,与Chrome DevTools的“网络”标签返回的数据类似。
答案 0 :(得分:3)
自2018年1月开始,似乎没有任何方法可以使用所有资源类型(监听console.log(result);
事件fails for videos),并正确统计压缩资源。< / p>
最佳解决方法似乎是监听response
事件,并手动处理事件:
Network.dataReceived
答案 1 :(得分:1)
如果使用的是puppeteer,则有服务器端节点...为什么不通过流将请求通过管道传输,然后计算内容大小?
还有https://github.com/watson/request-stats
您可能还想致电page.waitForNavigation,因为您可能正在努力解决异步计时问题
答案 2 :(得分:1)
@mjs 的解决方案即使在 2021 年也能完美运行。只需更换:
page._networkManager -> page._frameManager._networkManager
对我有用的完整示例:
const resources = {};
page._client.on('Network.dataReceived', (event) => {
const request = page._frameManager._networkManager._requestIdToRequest.get(
event.requestId
);
if (request && request.url().startsWith('data:')) {
return;
}
const url = request.url();
const length = event.dataLength;
if (url in resources) {
resources[url] += length;
} else {
resources[url] = length;
}
});
await page.goto('https://stackoverflow.com/questions/48263345/how-can-i-get-the-raw-download-size-of-a-request-using-puppeteer');
const totalUncompressedBytes = Object.values(resources).reduce((a, n) => a + n, 0);
console.log(totalUncompressedBytes);
答案 3 :(得分:0)
const imgaes_width =等待页面。$$ eval('img',锚=> [] .map.call(anchors,img => img.width)); const imgaes_height =等待页面。$$ eval('img',锚=> [] .map.call(anchors,img => img.height));