【发布时间】:2020-06-18 21:55:58
【问题描述】:
我正在尝试抓取传递给抓取函数的任何网页,但无论在 page.goto() 中设置的超时时间如何,我都会不断收到超时错误,如果设置为 0,应用程序只会一直等待。
const express = require('express');
const cors = require('cors');
const MYPORT = process.env.PORT || 4001;
const app = express();
const puppeteer = require('puppeteer');
app.use(express.json());
app.use(cors());
const scrape = async (url) => {
var body;
try {
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox'],
timeout: 0
});
console.log('Browser launched');
const page = await browser.newPage();
console.log('Page opened');
await page.goto(url, { waitUntil: 'load', timeout: 3 * 60000 });
await page.waitForSelector('body', {waitUntil: 'load'})
console.log('Link opened');
await page.waitForNavigation({waitUntil: 'networkidle2', timeout: 3 * 60000});
page.$eval('html', bdy => {
console.log(bdy);
body = bdy.innerHTML;
});
browser.close();
return body;
} catch (err) {
console.log(err);
}
};
scrape('http://google.com');
请问,我做错了什么?
我在 WSL(Linux 的 Windows 子系统)上使用 Ubuntu 18.04
【问题讨论】:
标签: node.js express puppeteer ubuntu-18.04 windows-subsystem-for-linux