본문으로 건너뛰기

특정 요청에 대한 탐색 건너뛰기

웹사이트를 크롤링하다 보면 CDN을 통해 제공되는 이미지와 같이 크롤러의 모든 기능을 사용할 필요는 없지만 저장하고 싶은 리소스를 만날 수 있습니다.

Request#skipNavigation 옵션과 sendRequest를 함께 사용하면 CDN에서 이미지를 가져와서 전체 크롤러를 사용하지 않고도 key-value 저장소에 저장할 수 있습니다.

정보

이 예제에서는 PlaywrightCrawler를 사용하여 이 기능을 보여주지만, 이 기능은 제공되는 모든 크롤러에서 사용 가능합니다.

Run on
import { PlaywrightCrawler, KeyValueStore } from 'crawlee';

// 모든 이미지를 저장할 키-값 저장소 생성
const imageStore = await KeyValueStore.open('images');

const crawler = new PlaywrightCrawler({
async requestHandler({ request, page, sendRequest }) {
// 요청에 탐색 건너뛰기가 설정되어 있어야 합니다.
if (request.skipNavigation) {
// 이미지 요청 및 버퍼 반환
const imageResponse = await sendRequest({ responseType: 'buffer' });

// 이미지를 키-값 저장소에 저장
await imageStore.setValue(`${request.userData.key}.png`, imageResponse.body);

// 나머지 코드를 실행하지 않도록 방지
return;
}

// 현재 페이지의 모든 이미지 소스 가져오기
const images = await page.$$eval('img', (imgs) => imgs.map((img) => img.src));

// 크롤러에 요청 추가, 각 이미지에 고유 키 부여
await crawler.addRequests(images.map((url, i) => ({ url, skipNavigation: true, userData: { key: i } })));
},
});

await crawler.addRequests(['https://crawlee.dev']);

// 크롤러 실행
await crawler.run();