PlaywrightCrawler 持续加载不触发 handlePageFunction

PlaywrightCrawler continuous loading does not trigger handlePageFunction

我有一个 PlaywrightCrawler 来抓取阿里巴巴。但是当我向一页添加请求时:

https://www.alibaba.com/product-detail/Mono-filament-12-mm-PP-fiber_1600139352513.html?spm=a27aq.industry_category_productlist.dt_3.1.3d733642TkHgZc

此页面一直加载到超时,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 方法