プログラマー向けモードで表示中ビジネスユーザー向けへ
Bright Data 学習ポータル
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 SDKPython からの統一クライアント検索、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 のように後段の用途で分けるほうが実運用向きです。

関連リンク