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

28 lines
942 B
TypeScript

import { CheerioCrawler } from 'crawlee';
import { URL } from 'node:url';
const crawler = new CheerioCrawler({
// Let's limit our crawls to make our
// tests shorter and safer.
maxRequestsPerCrawl: 20,
async requestHandler({ request, $ }) {
const title = $('title').text();
console.log(`The title of "${request.url}" is: ${title}.`);
// Without enqueueLinks, we first have to extract all
// the URLs from the page with Cheerio.
const links = $('a[href]')
.map((_, el) => $(el).attr('href'))
.get();
// Then we need to resolve relative URLs,
// otherwise they would be unusable for crawling.
const absoluteUrls = links.map((link) => new URL(link, request.loadedUrl).href);
// Finally, we have to add the URLs to the queue
await crawler.addRequests(absoluteUrls);
},
});
await crawler.run(['https://crawlee.dev']);