Files
2026-07-13 13:23:39 +08:00

55 lines
1.4 KiB
JavaScript

import { Actor } from 'apify';
import { CheerioCrawler, Dataset, log, Request } from '@crawlee/cheerio';
log.setLevel(log.LEVELS.DEBUG);
const r1 = new Request({
url: 'https://crawlee.dev/?q=1',
skipNavigation: true,
userData: { abc: { def: 'ghi' } },
});
const r2 = new Request({
url: 'https://crawlee.dev/?q=2',
skipNavigation: true,
});
r2.userData = { xyz: { kjl: 'mno' } };
const r3 = new Request({
url: 'https://crawlee.dev/?q=3',
});
const mainOptions = {
exit: Actor.isAtHome(),
storage:
process.env.STORAGE_IMPLEMENTATION === 'LOCAL'
? new (await import('@apify/storage-local')).ApifyStorageLocal()
: undefined,
};
// Persisting internal settings of `Request`.
await Actor.main(async () => {
let requestCounter = 0;
let navigationCounter = 0;
const crawler = new CheerioCrawler({
preNavigationHooks: [
() => {
navigationCounter++;
},
],
async requestHandler({ request }) {
requestCounter++;
if (request.skipNavigation) {
log.info(`Skipping ${request.id}...`);
return;
}
log.info(`Navigating on ${request.id}...`);
},
});
await crawler.run([r1, r2, r3]);
await Dataset.pushData({ requestCounter, navigationCounter });
}, mainOptions);