Непрерывная загрузка PlaywrightCrawler не запускает функцию handlePageFunction

#playwright #apify

#драматург #apify

Вопрос:

У меня есть PlaywrightCrawler, чтобы очистить Alibaba. Но когда я добавляю запрос на одну страницу, например:

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,
});
 

Ответ №1:

вы можете изменить свой параметр waitUntil, чтобы перейти на страницу, как только загрузится DOM, используя это:

 const crawler = new Apify.PlaywrightCrawler({
    requestQueue,
    // ...
    preNavigationHooks: [async (context, gotoOptions) => {
       gotoOptions.waitUntil = 'domcontentloaded';
    }],
});
 

это сработает, как только страница будет готова к запросу document.querySelectorAll , вам, возможно, придется подождать определенных условий внутри handlePageFunction , прежде чем начинать вызывать page методы