feat: click load more

This commit is contained in:
karishmas6
2024-09-20 23:35:49 +05:30
parent ce770e3c50
commit fb6ce10693

View File

@@ -447,11 +447,41 @@ export default class Interpreter extends EventEmitter {
await page.waitForTimeout(1000); await page.waitForTimeout(1000);
break; break;
case 'clickLoadMore': case 'clickLoadMore':
const loadMoreButton = await page.$(config.pagination.selector); while (true) {
if (!loadMoreButton) { // Find and click the 'Load More' button
return allResults; const loadMoreButton = await page.$(config.pagination.selector);
if (!loadMoreButton) {
// No more "Load More" button, so scrape the remaining items
const finalResults = await page.evaluate((cfg) => window.scrapeList(cfg), config);
allResults = allResults.concat(finalResults);
return allResults;
}
// Click the 'Load More' button to load additional items
await loadMoreButton.click();
await page.waitForTimeout(2000); // Wait for new items to load
// After clicking 'Load More', scroll down to load more items
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
await page.waitForTimeout(2000);
// Check if more items are available
const currentHeight = await page.evaluate(() => document.body.scrollHeight);
if (currentHeight === previousHeight) {
// No more items loaded, return the scraped results
const finalResults = await page.evaluate((cfg) => window.scrapeList(cfg), config);
allResults = allResults.concat(finalResults);
return allResults;
}
previousHeight = currentHeight;
if (config.limit && allResults.length >= config.limit) {
// If limit is set and reached, return the limited results
allResults = allResults.slice(0, config.limit);
break;
}
} }
await loadMoreButton.click();
break; break;
default: default:
const results = await page.evaluate((cfg) => window.scrapeList(cfg), config); const results = await page.evaluate((cfg) => window.scrapeList(cfg), config);