PlaywrightCrawler 持续加载不触发 handlePageFunction
PlaywrightCrawler continuous loading does not trigger handlePageFunction
我有一个 PlaywrightCrawler 来抓取阿里巴巴。但是当我向一页添加请求时:
此页面一直加载到超时,handlePageFunction 没有被调用。
其实所有的内容都已经加载完成了。我注意到一些 AJAX 在后台运行。
如何强制 PlaywrightCrawler 调用 handlePageFunction,即使 AJAX 没有完成它?
const crawler = new Apify.PlaywrightCrawler({
requestQueue,
launchContext: {
launchOptions: {
headless: false,
},
},
handlePageFunction,
});
您可以更改 waitUntil 参数,以便在 DOM 加载后立即转到该页面:
const crawler = new Apify.PlaywrightCrawler({
requestQueue,
// ...
preNavigationHooks: [async (context, gotoOptions) => {
gotoOptions.waitUntil = 'domcontentloaded';
}],
});
一旦页面准备好被 document.querySelectorAll
查询,这将触发,您可能必须等待 handlePageFunction
中的特定条件,然后才能开始调用 page
方法
我有一个 PlaywrightCrawler 来抓取阿里巴巴。但是当我向一页添加请求时:
此页面一直加载到超时,handlePageFunction 没有被调用。
其实所有的内容都已经加载完成了。我注意到一些 AJAX 在后台运行。
如何强制 PlaywrightCrawler 调用 handlePageFunction,即使 AJAX 没有完成它?
const crawler = new Apify.PlaywrightCrawler({
requestQueue,
launchContext: {
launchOptions: {
headless: false,
},
},
handlePageFunction,
});
您可以更改 waitUntil 参数,以便在 DOM 加载后立即转到该页面:
const crawler = new Apify.PlaywrightCrawler({
requestQueue,
// ...
preNavigationHooks: [async (context, gotoOptions) => {
gotoOptions.waitUntil = 'domcontentloaded';
}],
});
一旦页面准备好被 document.querySelectorAll
查询,这将触发,您可能必须等待 handlePageFunction
中的特定条件,然后才能开始调用 page
方法