bright-data-best-practices은(는) 무엇을 하나요?
최적의 방법이 내장된 프로덕션 준비 완료 Bright Data 통합을 구축하세요. 코딩 어시스턴트(Claude Code, Cursor 등)를 사용하는 개발자를 위한 참조 문서로, 웹 스크래핑, 검색, 브라우저 자동화 및 구조화된 데이터 추출을 구현합니다. Web Unlocker API, SERP API, Web Scraper API 및 Browser API(Scraping Browser)를 다룹니다.
개요
이 기술은 Bright Data의 핵심 API를 최적의 방법으로 활용하는 방법을 설명합니다. 각 API는 특정 웹 데이터 수집 요구 사항을 해결하도록 설계되었습니다:
- Web Unlocker API: 지능형 프록시 로테이션, 브라우저 핑거프린팅, 캡차 해결을 통해 차단 없이 웹사이트에 접근합니다.
- SERP API: Google, Bing, Yandex 등 검색 엔진 결과 페이지(SERP)에서 지역별, 언어별 검색 결과를 추출합니다.
- Web Scraper API: CSS 선택자를 사용하여 웹페이지에서 구조화된 데이터를 추출합니다.
- Browser API (Scraping Browser): 헤드리스 Chromium 브라우저를 원격 제어하여 동적 콘텐츠를 처리합니다.
설정
1. 계정 및 인증
Bright Data에 가입하고 API 토큰을 생성하세요. 환경 변수에 설정합니다:
export BRIGHTDATA_TOKEN="your_api_token_here"
2. 설치
Python과 Node.js 클라이언트 라이브러리를 사용합니다:
# Python
pip install brightdata
# Node.js
npm install @brightdata/client
Web Unlocker API
차단되지 않고 데이터를 가져오는 핵심 API입니다.
Python 예제:
from brightdata import Client
client = Client(token='your_token')
response = client.unlocker.get('https://example.com')
print(response.text)
고급 옵션
- 지역 타겟팅:
country매개변수로 출발지 IP 국가를 지정합니다. - 세션 유지:
session_id로 쿠키와 세션을 유지합니다. - 렌더링:
render=true로 JavaScript 렌더링을 활성화합니다.
SERP API
검색 엔진 결과를 구조화된 데이터로 수집합니다.
Python 예제:
from brightdata import Client
client = Client(token='your_token')
results = client.serp.search(
query='artificial intelligence',
engine='google',
country='us',
language='en'
)
for result in results:
print(result.title, result.url)
지원 엔진
| 엔진 | 매개변수 값 |
|---|---|
google | |
| Bing | bing |
| Yandex | yandex |
Web Scraper API
CSS 선택자를 기반으로 웹페이지에서 데이터를 추출합니다.
Python 예제:
from brightdata import Client
client = Client(token='your_token')
data = client.scraper.extract(
url='https://example.com/products',
selectors={
'title': 'h2.product-title',
'price': 'span.price',
'image': 'img.product-image @src'
}
)
print(data)
선택자 팁
- 텍스트:
span.text→innerText추출 - 속성:
a.link @href→href속성 추출 - 반복: 선택자가 여러 요소와 일치하면 목록 반환
Browser API (Scraping Browser)
동적 콘텐츠에 대해 전체 브라우저를 원격 제어합니다.
Node.js 예제:
const { BrowserClient } = require('@brightdata/client');
const client = new BrowserClient({ token: process.env.BRIGHTDATA_TOKEN });
const browser = await client.connect();
const page = await browser.newPage();
await page.goto('https://example.com');
const title = await page.title();
console.log(title);
await browser.close();
오류 처리
모든 API는 HTTP 상태 코드와 JSON 응답으로 오류를 보고합니다. 일반적인 상태 코드:
200: 성공401: 인증 실패 (토큰 확인)429: 속도 제한 초과 (재시도 대기)500: 서버 오류 (나중에 재시도)
재시도 로직 예제:
import time
from brightdata import Client, BrightDataError
client = Client(token='your_token')
max_retries = 3
for attempt in range(max_retries):
try:
response = client.unlocker.get('https://example.com')
break
except BrightDataError as e:
if attempt < max_retries - 1:
time.sleep(2 ** attempt)
else:
raise
모범 사례 요약
- 환경 변수 사용: API 토큰을 코드에 하드코딩하지 마십시오.
- 세션 재사용: 동일 대상에 대한 여러 요청 시 세션을 재사용하여 성능을 향상시킵니다.
- 속도 제한 존중:
429응답을 처리하고 백오프 전략을 구현합니다. - 오류 로깅: 디버깅을 위해 요청과 응답을 기록합니다.
- 타겟 존중: 과도한 요청을 피하기 위해 합리적인 지연 시간을 설정합니다.