所有的木偶指南都非常原始。
const puppeteer = require('puppeteer');
(async function() {
const browser = await puppeteer.launch({
headless: false,
defaultViewport: null
});
const page = await browser.newPage();
await page.goto('https://url.com/', { waitUntil: 'networkidle2' });
await page.click('#button-filters');
await page.click('label[for="filter-type-pack"]'); // После второго и третьего клика
await page.click('label[for="order_by-date"]'); // страница отправляет ajax-запрос
// . . .
await browser.close();
})();
在代码中三个点(. . .)的地方,根据手册,建议使用该方法等待一秒或多秒,page.waitFor(1000)然后从结果页面的 DOM 中提取请求的结果。问题在于:a)无法保证 ajax 请求将在分配的等待时间内完成,b)在最终的 DOM 中没有我需要的信息,但是这些信息在服务器对阿贾克斯请求。
因此,有两个问题:
如何保证对请求或连接错误的响应?
如何从 ajax 请求的响应正文中提取信息?
您可以使用事件处理程序
'response':