使用 Crawlee 爬取網頁內容

建立專案

建立專案,選擇以 Puppeteer 作為驅動。

1
2
3
npx crawlee create crawlee-example

> PuppeteerCrawler template project [JavaScript]

修改 src/main.js 檔。

1
2
3
4
5
6
7
8
9
10
11
12
import { PuppeteerCrawler } from 'crawlee';
import { router } from './routes.js';

// 指定起始網址
const startUrls = ['https://crawlee.dev'];

const crawler = new PuppeteerCrawler({
requestHandler: router,
maxRequestsPerCrawl: 20,
});

await crawler.run(startUrls);

修改 src/routes.js 檔。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import { createPuppeteerRouter } from 'crawlee';

export const router = createPuppeteerRouter();

router.addDefaultHandler(async ({ enqueueLinks, log }) => {
log.info(`enqueueing new URLs`);
await enqueueLinks({
globs: ['https://crawlee.dev/**'], // 指定網址模式
label: 'detail', // 指定處理器
});
});

router.addHandler('detail', async ({ request, page, log, pushData }) => {
const title = await page.title();
log.info(`${title}`, { url: request.loadedUrl });

// 儲存資料
await pushData({
url: request.loadedUrl,
title,
});
});

啟動爬蟲。

1
npm start

參考資料