본문으로 건너뛰기

Got Scraping

소개​

BasicCrawler를 사용할 때는 수동으로 요청을 보내야 합니다. 이를 위해 컨텍스트 인식 sendRequest() 함수를 사용할 수 있습니다:

import { BasicCrawler } from 'crawlee';

const crawler = new BasicCrawler({
async requestHandler({ sendRequest, log }) {
const res = await sendRequest();
log.info('받은 본문', res.body);
},
});

내부적으로 got-scraping을 사용합니다. Got Scraping은 브라우저 요청을 모방하도록 개발된 Got 확장 프로그램으로, 차단되지 않고 웹페이지를 열 수 있는 가능성이 높습니다.

sendRequest API​

async sendRequest(overrideOptions?: GotOptionsInit) => {
return gotScraping({
url: request.url,
method: request.method,
body: request.payload,
headers: request.headers,
proxyUrl: crawlingContext.proxyInfo?.url,
sessionToken: session,
responseType: 'text',
...overrideOptions,
retry: {
limit: 0,
...overrideOptions?.retry,
},
cookieJar: {
getCookieString: (url: string) => session!.getCookieString(url),
setCookie: (rawCookie: string, url: string) => session!.setCookie(rawCookie, url),
...overrideOptions?.cookieJar,
},
});
}

url​

기본적으로 현재 작업의 URL입니다. 필요한 경우 string 또는 URL 인스턴스로 재정의할 수 있습니다.

자세한 내용은 Got 문서를 참조하세요.

method​

기본적으로 현재 작업의 HTTP 메서드입니다. 가능한 값은 'GET', 'POST', 'HEAD', 'PUT', 'PATCH', 'DELETE'입니다.

자세한 내용은 Got 문서를 참조하세요.

body​

기본적으로 현재 작업의 HTTP 페이로드입니다.

자세한 내용은 Got 문서를 참조하세요.

headers​

기본적으로 현재 작업의 HTTP 헤더입니다. string 값을 가진 객체입니다.

자세한 내용은 Got 문서를 참조하세요.

proxyUrl​

protocol://username:password@hostname:port 형식의 프록시 서버를 나타내는 문자열입니다.

예를 들어, Apify 프록시 서버는 다음과 같습니다: http://auto:[email protected]:8000

Basic Crawler에는 세션이나 프록시 개념이 없으므로 proxyUrl 옵션을 수동으로 전달해야 합니다:

import { BasicCrawler } from 'crawlee';

const crawler = new BasicCrawler({
async requestHandler({ sendRequest, log }) {
const res = await sendRequest({
proxyUrl: 'http://auto:[email protected]:8000',
});
log.info('받은 본문', res.body);
},
});

실제 IP 주소를 숨기기 위해 프록시를 사용합니다.

자세한 내용은 Got Scraping 문서를 참조하세요.

sessionToken​

브라우저 지문을 생성할 때 키로 사용되는 비원시 객체입니다. 동일한 토큰을 가진 지문은 변경되지 않습니다. 이는 동일한 Apify 세션을 사용할 때 user-agent 헤더를 유지하는 데 사용될 수 있습니다.

자세한 내용은 Got Scraping 문서를 참조하세요.

responseType​

이 옵션은 응답을 어떻게 파싱할지 정의합니다.

기본적으로 HTML 웹사이트를 가져오므로 responseType을 'text'로 설정합니다. JSON도 가능합니다:

import { BasicCrawler } from 'crawlee';

const crawler = new BasicCrawler({
async requestHandler({ sendRequest, log }) {
const res = await sendRequest({ responseType: 'json' });
log.info('받은 본문', res.body);
},
});

자세한 내용은 Got 문서를 참조하세요.

cookieJar​

Got은 쿠키를 관리하기 위해 cookieJar를 사용합니다. tough-cookie 패키지의 인터페이스를 가진 객체입니다.

예시:

import { BasicCrawler } from 'crawlee';
import { CookieJar } from 'tough-cookie';

const cookieJar = new CookieJar();

const crawler = new BasicCrawler({
async requestHandler({ sendRequest, log }) {
const res = await sendRequest({ cookieJar });
log.info('받은 본문', res.body);
},
});

자세한 내용은 다음을 참조하세요

retry.limit​

이 옵션은 Got의 최대 재시도 횟수를 지정합니다.

기본적으로 retry.limit은 0으로 설정됩니다. Crawlee에는 자체적인 (충분히 복잡한) 재시도 관리가 있기 때문입니다.

안정성을 위해 이 값을 변경하지 않는 것이 좋습니다.

useHeaderGenerator​

브라우저 헤더를 생성할지 여부를 나타내는 불리언 값입니다. 기본적으로 true로 설정되어 있으며, 더 나은 결과를 위해 이 설정을 유지하는 것이 좋습니다.

headerGeneratorOptions​

브라우저 지문을 생성하는 방법을 나타내는 객체입니다. 예시:

import { BasicCrawler } from 'crawlee';

const crawler = new BasicCrawler({
async requestHandler({ sendRequest, log }) {
const res = await sendRequest({
headerGeneratorOptions: {
devices: ['mobile', 'desktop'],
locales: ['en-US'],
operatingSystems: ['windows', 'macos', 'android', 'ios'],
browsers: ['chrome', 'edge', 'firefox', 'safari'],
},
});
log.info('받은 본문', res.body);
},
});

자세한 내용은 HeaderGeneratorOptions 문서를 참조하세요.

관련 링크