use*_*605 3 node.js puppeteer puppeteer-cluster
我正在使用 puppeteer-cluster 来抓取网页。
如果我在每个网站上同时打开多个页面(8-10 个页面),连接速度会变慢,并且会出现许多超时错误,如下所示:
TimeoutError:超出导航超时:超出 30000 毫秒
我只需要访问每个页面的 HTML 代码。我不需要等待 domcontentloaded 等。
有没有办法告诉page.goto()仅等待来自网络服务器的第一个响应?或者我需要使用另一种技术来代替木偶操作者?
domcontentloaded是第一个 html 内容的事件。
DOMContentLoaded 事件在初始 HTML 文档完全加载和解析后触发,无需等待样式表、图像和子框架完成加载。
以下内容将在加载初始 HTML 文档时完成加载。
await page.goto(url, {waitUntil: 'domcontentloaded'})
Run Code Online (Sandbox Code Playgroud)
但是,您可以阻止图像或样式表以节省带宽,并且在一次加载 10 个页面时加载速度更快。
将下面的代码放在正确的位置(在使用导航之前page.goto),它将停止加载图像、样式表、字体和脚本。
await page.setRequestInterception(true);
page.on('request', (request) => {
if (['image', 'stylesheet', 'font', 'script'].indexOf(request.resourceType()) !== -1) {
request.abort();
} else {
request.continue();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4631 次 |
| 最近记录: |