UC-DEV-001DeveloperLv2
Python SDK で検索/スクレイピングを共通化
SDK を ETL/バッチに組み込み、検索・取得・保存の実装を高速化する。
Python SDK
KPI 例
- 実装時間
- 再利用率
- 失敗率
Bright Data の Python SDK は、SERP、Web スクレイピング、プラットフォーム別スクレイパー、Scraping Browser 接続を Python からまとめて扱いたいときの入口として使えます。用途ごとに curl や独自 HTTP ラッパーを増やすより、client を 1 つに寄せたほうが、認証・ログ・保存先の扱いを揃えやすくなります。
誰の課題か
- Python の ETL やバッチで、検索結果取得とページ取得を別実装にしていて保守が重いチーム
- PoC では
requests直書きで進めたが、SERP / Unlocker / Browser を横断すると整理しきれなくなってきた開発者 - まずは少量の同期処理で始め、必要になったら高並列処理へ拡張したいデータ基盤担当
推奨製品セット
| 製品 | 役割 | このページでの使い方 |
|---|---|---|
| Python SDK | Python からの統一クライアント | 検索、URL取得、ブラウザ接続の入口にする |
| SERP API | 検索結果取得 | 調査対象 URL の発見を担当 |
| Web Unlocker | 一般的なページ取得 | ボット対策や地域差があるページの取得に使う |
| Scraping Browser | 実ブラウザ操作 | Playwright 互換で CDP 接続が必要な場面に使う |
- 公式 Docs では、単純なスクリプトは
SyncBrightDataClient、高並列ワークロードはBrightDataClientを使い分ける案内です。 - 認証は API Access が中心ですが、ブラウザ接続時は Native Access 形式のブラウザ認証情報も使います。
最小実装イメージ
まずは同期クライアントで検索と URL 取得をそろえる
pip install brightdata-sdk
export BRIGHTDATA_API_TOKEN="your_api_token_here"from brightdata import SyncBrightDataClient
with SyncBrightDataClient() as client:
# URL を 1 件取得
page = client.scrape_url("https://example.com")
print(page.success)
print(str(page.data)[:200])
# Google 検索
search = client.search.google(query="Bright Data")
print(f"Found: {len(search.data)}")- 公式 Docs では、API トークンは
BRIGHTDATA_API_TOKENから自動読込できます。 - サイト全体で
BRIGHTDATA_API_KEYを標準にするなら、起動前にBRIGHTDATA_API_TOKEN=$BRIGHTDATA_API_KEYを渡して吸収する運用でも構いません。
Playwright 接続が必要なら SDK からブラウザ接続文字列を受け取る
from brightdata import BrightDataClient
from playwright.sync_api import sync_playwright
import os
client = BrightDataClient(
token=os.getenv("BRIGHTDATA_API_TOKEN"),
browser_username=os.getenv("BRIGHTDATA_BROWSER_USERNAME"),
browser_password=os.getenv("BRIGHTDATA_BROWSER_PASSWORD"),
)
with sync_playwright() as playwright:
browser = playwright.chromium.connect_over_cdp(client.connect_browser())
page = browser.new_page()
page.goto("https://example.com", timeout=120000)
print(page.title())
browser.close()- ここで使う
browser_username/browser_passwordは、Scraping Browser の Access Details から取得する値です。 - ブラウザ用途まで Python SDK に寄せると、検索用コードとブラウザ用コードの呼び出し元を同じ Python プロジェクトに置きやすくなります。
運用ポイント
- API キーの権限は最小権限を守り、通常ジョブに
ADMINを使わないでください。 SyncBrightDataClientで検証し、並列性が必要になった段階でBrightDataClientへ広げると切り分けが楽です。- 検索、一般取得、ブラウザ操作はコスト特性が異なるため、SDK を共通化しても zone は用途別に分けたほうが予算管理しやすくなります。
- ブラウザ認証情報は API キーとは別物です。Scraping Browser のパスワード再生成時は、接続しているワーカーが同時に止まらないよう更新手順を決めておきます。
- 取得結果の保存形式は最初から固定しすぎず、検索結果は JSON、本文は Markdown または HTML のように後段の用途で分けるほうが実運用向きです。