바이두 검색 결과 페이지(SERP) 데이터 수집 방법: 3가지 접근법

바이두 SERP 데이터 스크래핑의 세 가지 주요 접근법을 살펴보세요. 맞춤형 Python 스크래퍼 구축부터 Bright Data의 SERP API 및 Web MCP 통합 사용까지 포함됩니다.
6 분 읽기
Baidu Web Scraping

이 가이드에서 배우게 될 내용:

  1. 바이두 웹 스크래핑을 시작하는 데 필요한 모든 것.
  2. 바이두 스크래핑에 가장 널리 쓰이고 효과적인 방법들.
  3. Python으로 맞춤형 바이두 스크레이퍼를 처음부터 구축하는 방법.
  4. Bright Data SERP API를 사용하여 검색 엔진 결과를 가져오는 방법.
  5. 웹 MCP를 통해 AI 에이전트에 바이두 검색 데이터 접근 권한 부여 방법.

자, 시작해 보겠습니다!

바이두 SERP에 익숙해지기

어떤 조치를 취하기 전에, 바이두 SERP(검색 엔진 결과 페이지)의 구조, 포함된 데이터, 접근 방법 등을 이해하는 데 시간을 할애하세요.

바이두 SERP URL 및 봇 탐지 시스템

브라우저에서 바이두를 열고 검색을 시작하세요. 예를 들어 “bright data”를 검색하면 다음과 같은 URL이 표시됩니다:

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=bright%20data&fenlei=256&oq=ai%2520model&rsv_pq=970a74b9001542b3&rsv_t=7f84gPOmZQIjrqRcld6qZUI%2FiqXxDExphd0Tz5ialqM87sc5Falk%2B%2F3hxDs&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=12&rsv_sug1=1&rsv_sug7=100&rsv_btype=t&inputT=1359&rsv_sug4=1358

이 모든 쿼리 매개변수 중에서 중요한 것은 다음과 같습니다:

  • 기본 URL: https://www.baidu.com/s.
  • 검색 쿼리 매개변수: wd.

다시 말해, 더 짧은 URL로 동일한 결과를 얻을 수 있습니다:

https://www.baidu.com/s?wd=bright%20data

또한 바이두는 pn 쿼리 매개변수를 통해 페이지 매김을 위한 URL을 구성합니다. 구체적으로, 두 번째 페이지에는 &pn=10이 추가되며, 이후 각 페이지마다 해당 값이 10씩 증가합니다. 예를 들어, 키워드 “bright data”로 3페이지를 스크래핑하려면 SERP URL은 다음과 같습니다:

https://www.baidu.com/s?wd=bright%20data        -> 1페이지
https://www.baidu.com/s?wd=bright%20data&pn=10  -> 2페이지
https://www.baidu.com/s?wd=bright%20data&pn=20  -> 3페이지

이제 Postman과 같은 HTTP 클라이언트에서 단순한 GET HTTP 요청으로 이러한 URL에 직접 접근하면 다음과 같은 메시지를 볼 수 있습니다:

Note the resulting error page

보시다시피, 바이두는 “网络不给力,请稍后重试” (네트워크 상태가 좋지 않습니다. 잠시 후 다시 시도해 주세요라는 의미지만, 실제로는 봇 방지 페이지입니다)라는 메시지가 포함된 페이지를 반환합니다.

웹 스크래핑 작업에 일반적으로 필수적인 User-Agent 헤더를 포함해도 이런 현상이 발생합니다. 즉, 바이두는 요청이 자동화된 것임을 감지하고 차단하며, 추가적인 인간 인증을 요구합니다.

이는 바이두를 스크래핑하려면 Playwright나 Puppeteer 같은 브라우저 자동화 도구가 필요함을 분명히 보여줍니다. HTTP 클라이언트와 HTML 파서만으로는 충분하지 않으며, 지속적으로 봇 방지 차단에 걸리게 됩니다.

바이두 SERP에서 이용 가능한 데이터

이제 브라우저에 표시된 “bright data”에 대한 바이두 SERP에 집중해 보세요. 다음과 같은 화면을 볼 수 있습니다:

The resulting Baidu SERP

각 바이두 SERP 페이지는 두 개의 열로 나뉩니다. 왼쪽 열에는 AI 개요( AI 개요 스크래핑 방법 참조)가 포함된 후 검색 결과가 이어집니다. 이 열 하단에는 “相关搜索”(관련 검색어) 섹션이 있으며, 그 아래에는 페이지네이션 탐색 요소가 있습니다.

오른쪽 열에는 “百度热搜”(바이두 핫서치)가 표시되며, 이는 바이두에서 트렌드이거나 가장 인기 있는 주제를 보여줍니다. (참고: 이러한 트렌드 결과는 반드시 검색어와 관련이 있는 것은 아닙니다.)

이것이 바이두 SERP에서 스크래핑할 수 있는 주요 데이터의 전부입니다. 본 튜토리얼에서는 일반적으로 가장 중요한 정보인 검색 결과에만 집중하겠습니다!

바이두 데이터 스크래핑 주요 방법

바이두 검색 결과 데이터를 얻는 방법은 여러 가지가 있습니다. 주요 방법들을 아래 요약표에서 비교해 보세요:

접근법 통합 복잡성 요구 사항 가격 차단 위험 확장성
맞춤형 스크레이퍼 구축 중간/높음 파이썬 프로그래밍 기술 + 브라우저 자동화 기술 무료 (차단을 피하기 위해 안티봇 브라우저가 필요할 수 있음) 가능 제한적
Bright Data의 SERP API 사용 낮음 모든 HTTP 클라이언트 유료 없음 무제한
웹 MCP 서버 통합 낮음 MCP를 지원하는 AI 에이전트 프레임워크 또는 플랫폼 무료 이용권 제공, 이후 유료화 없음 무제한

튜토리얼을 진행하면서 각 접근 방식을 구현하는 방법을 배우게 될 것입니다!

참고 1: 선택한 방법에 관계없이, 본 가이드 전반에 걸쳐 사용되는 대상 검색 쿼리는 “bright data”입니다. 즉, 해당 쿼리에 대한 바이두 검색 결과를 구체적으로 가져오는 방법을 보게 될 것입니다.

참고 2: 로컬에 Python이 이미 설치되어 있고 Python 웹 스크립팅에 익숙하다고 가정합니다.

접근법 #1: 맞춤형 스크레이퍼 구축

브라우저 자동화 프레임워크 또는 HTTP 클라이언트와 HTML 파서를 결합하여 바이두 스크레이퍼를 처음부터 구축합니다.

👍 장점:

  • 데이터 파싱 로직을 완전히 제어하여 필요한 정보를 정확히 추출할 수 있습니다.
  • 사용자 요구에 맞게 유연하고 맞춤 설정 가능.

👎 단점:

  • 설정, 코딩 및 유지 관리 노력이 필요합니다.
  • 대규모 실행 시 IP 차단, CAPTCHA, 속도 제한 등 웹 스크래핑 관련 문제 발생 가능성 있음.

접근법 #2: Bright Data의 SERP API 사용

Bright Data SERP API를 활용하세요. 이 프리미엄 솔루션은 간편한 호출 방식의 HTTP 엔드포인트를 통해 바이두(및 기타 검색 엔진)를 쿼리할 수 있게 합니다. 모든 봇 방지 조치와 확장성을 자동으로 처리합니다. 이러한 기능과 다양한 장점 덕분에 시장에서 최고의 SERP 및 검색 API 중 하나로 꼽힙니다.

👍 장점:

👎 단점:

  • 유료 서비스입니다.

접근법 #3: 웹 MCP 서버 통합

Bright Data의 Web MCP를 통해 AI 에이전트가 Baidu 검색 결과를 무료로 이용할 수 있도록 합니다. 이 서비스는 내부적으로 Bright Data SERP API 및 Web Unlocker에 연결됩니다.

👍 장점:

  • AI 워크플로우 및 에이전트에 통합 가능.
  • 무료 이용 가능.
  • 데이터 파싱 로직 불필요 (AI가 처리).

👎 단점:

  • LLM의 동작에 대한 제어 제한.

접근법 #1: Playwright를 사용한 Python 기반 맞춤형 바이두 스크래퍼 구축

아래 단계를 따라 Python으로 맞춤형 바이두 웹 스크래핑 스크립트를 구축하세요.

앞서 언급한 바와 같이, 바이두 스크래핑에는 단순 HTTP 요청이 차단되기 때문에 브라우저 자동화가 필요합니다. 이 튜토리얼 섹션에서는 Python에서 브라우저 자동화를 위한 최고의 라이브러리 중 하나인 Playwright를 사용할 것입니다.

1단계: 스크래핑 프로젝트 설정

터미널을 열고 바이두 스크레이퍼 프로젝트용 새 폴더를 생성하세요:

mkdir baidu-scraper

baidu-scraper/ 폴더에는 스크래핑 프로젝트의 모든 파일이 포함됩니다.

다음으로 프로젝트 디렉터리로 이동하여 내부에서 Python 가상 환경을 생성합니다:

cd baidu-scraper
python -m venv .venv

이제 선호하는 Python IDE에서 프로젝트 폴더를 엽니다. Python 확장 프로그램이 설치된 Visual Studio Code 또는 PyCharm Community Edition을 권장합니다.

프로젝트 디렉토리 루트에 scraper.py라는 새 파일을 추가하세요. 프로젝트 구조는 다음과 같아야 합니다:

baidu-scraper/
├── .venv/
└── scraper.py

터미널에서 가상 환경을 활성화합니다. Linux 또는 macOS에서는 다음 명령을 실행하세요:

source .venv/bin/activate

Windows에서는 동일하게 다음을 실행하세요:

.venv/Scripts/activate

가상 환경이 활성화된 상태에서 pip를 통해 playwright 패키지를 설치합니다:

pip install playwright

다음으로 필요한 Playwright 종속성 (예: 브라우저 바이너리) 을 설치합니다:

python -m playwright install

완료! 이제 Python 환경이 Baidu 웹 스크레이퍼 구축을 시작할 준비가 되었습니다.

2단계: Playwright 스크립트 초기화

scraper.py 파일에서 Playwright를 임포트하고 동기식 API를 사용해 제어 가능한 크로미움 브라우저 인스턴스를 시작합니다:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 헤드리스 모드로 크로미움 인스턴스 초기화
    browser = p.chromium.launch(headless=True)  # 디버깅을 위해 브라우저를 보려면 headless=False 설정
    page = browser.new_page()

    # 스크래핑 로직...

    # 브라우저 닫기 및 리소스 해제
    browser.close()

위 코드 조각은 바이두 스크레이퍼의 기반을 형성합니다.

headless=True 매개변수는 Playwright가 가시적인 GUI 없이 Chromium을 실행하도록 지시합니다. 테스트 결과, 이 설정은 바이두의 봇 탐지를 유발하지 않습니다. 따라서 스크래핑에 효과적입니다. 다만, 코드 개발 또는 디버깅 시에는 headless=False로 설정하여 브라우저에서 발생하는 상황을 실시간으로 관찰하는 것이 더 편리할 수 있습니다.

좋습니다! 이제 바이두 검색 결과 페이지(SERP)에 연결하여 검색 결과를 가져오기 시작하세요.

단계 #3: 대상 SERP 방문

앞서 분석한 바와 같이 바이두 SERP URL을 구축하는 것은 간단합니다. Playwright에 사용자 상호작용(검색창 입력 및 제출 등)을 시뮬레이션하도록 지시하는 대신, SERP URL을 프로그래밍 방식으로 구축하고 Playwright가 직접 해당 URL로 이동하도록 지시하는 것이 훨씬 쉽습니다.

다음은 “bright data” 검색어를 위한 바이두 SERP URL 생성 로직입니다:

# 바이두 검색 페이지 기본 URL
base_url = "https://www.baidu.com/s"

# 검색 키워드/키프레이즈
search_query = "bright data"
params = {"wd": search_query}

# 바이두 SERP URL 생성
url = f"{base_url}?{urlencode(params)}"

Python 표준 라이브러리에서 urlencode() 함수를 반드시 임포트하세요:

from urllib.parse import urlencode

이제 Playwright로 제어하는 브라우저가 생성된 URL을 방문하도록 goto()를 통해 지시합니다:

page.goto(url)

디버거에서 헤드리스 모드( headless=False)로 스크립트를 실행하면 크로미움 창에 바이두 SERP 페이지가 로드되는 것을 확인할 수 있습니다:

Note the page loaded by the Chromium instance controlled by your Playwright script

멋지네요! 바로 이 SERP를 다음에 스크래핑할 것입니다.

4단계: 모든 SERP 결과 스크래핑 준비

스크래핑 로직을 시작하기 전에 바이두 SERP의 구조를 분석해야 합니다. 먼저 페이지에 여러 검색 결과 요소가 포함되어 있으므로 추출된 데이터를 저장할 리스트가 필요합니다. 따라서 빈 리스트를 초기화하는 것으로 시작하세요:

serp_results = []

다음으로, 브라우저의 시크릿 창(깨끗한 세션을 보장하기 위해)에서 대상 바이두 SERP를 엽니다:

https://www.baidu.com/s?wd=bright%20data

검색 결과 요소 중 하나를 마우스 오른쪽 버튼으로 클릭하고 “검사”를 선택하여 브라우저의 개발자 도구를 엽니다:

Inspecting a search result element on the target Baidu SERP page

DOM 구조를 살펴보면 각 검색 결과 항목이 result 클래스를 가지는 것을 확인할 수 있습니다. 이는 .result CSS 선택자를 사용하여 페이지의 모든 검색 결과를 선택할 수 있음을 의미합니다.

Playwright 스크립트에서 해당 선택기를 적용하세요:

search_result_elements = page.locator(".result")

참고: 이 구문에 익숙하지 않다면 Playwright 웹 스크래핑 가이드를 참고하세요.

마지막으로 선택된 각 요소를 반복 처리합니다:

for search_result_element in search_result_elements.all():
    # 데이터 파싱 로직...

바이두 검색 결과를 추출하고 serp_results 목록을 채우기 위한 데이터 파싱 로직 적용 준비:

완벽합니다! 이제 바이두 스크래핑 워크플로우를 마무리할 때가 가까워졌습니다.

5단계: 검색 결과 데이터 스크래핑

바이두 결과 페이지의 SERP 요소 HTML 구조를 살펴보세요. 이번에는 추출할 데이터를 식별하기 위해 중첩된 요소에 집중하세요.

먼저 제목 섹션을 살펴봅니다:

Inspecting the title section of the Baidu SERP element

이어서 일부 결과에 “官方”(“공식”) 라벨이 표시되는 점을 확인하세요:

Note the “官方” label

다음으로 SERP 결과 이미지에 집중하세요:

Inspecting the image section of the Baidu SERP element

마지막으로 설명/요약 부분을 살펴봅니다:

Inspecting the description section of the Baidu SERP element

이러한 중첩된 요소들로부터 다음 데이터를 추출할 수 있습니다:

  • .sc-link 요소의 href 속성에서결과 URL을 추출합니다.
  • .sc-link 요소의 텍스트에서결과 제목 추출.
  • 결과 설명/요약은 [data-module='abstract'] 텍스트에서추출합니다.
  • .sc-image 내부의 img src 속성에서결과 이미지.
  • .result__snippet 텍스트에서결과 스니펫.
  • 공식 레이블은 href가 https://aiqicha.baidu.com/feedback/official 로 시작하는 <a> 요소에서 가져옵니다(존재하는 경우).

Playwright의 로케이터 API를 사용하여 요소를 선택하고 원하는 데이터를 추출합니다:

link_element = search_result_element.locator(".sc-link")
link = link_element.get_attribute("href")
title = link_element.inner_text()

description_element = search_result_element.locator("[data-module='abstract']")
description = description_element.inner_text() if description_element.count() > 0 else ""

image_element = search_result_element.locator(".sc-image img")
image = image_element.get_attribute("src") if image_element.count() > 0 else None

official_element = search_result_element.locator("a[href^='https://aiqicha.baidu.com/feedback/official']")
official = official_element.count() > 0

모든 SERP 항목이 동일하지 않다는 점을 명심하세요. 오류를 방지하려면 항상 속성이나 텍스트에 접근하기 전에 해당 요소가 존재하는지 확인하세요 (.count() > 0).

훌륭합니다! 방금 바이두 SERP 데이터 파싱 로직을 정의하셨습니다.

6단계: 수집된 검색 결과 데이터 모으기

각 검색 결과에 대한 사전(dictionary)을 생성하고 이를 serp_results 리스트에 추가하여 for 루프를 마무리합니다:

serp_result = {
    "title": title.strip(),
    "href": link.strip(),
    "description": description.strip(),
    "image": image.strip() if image else "",
    "official": official
}
serp_results.append(serp_result)

훌륭합니다! 이제 바이두 웹 스크래핑 로직이 완성되었습니다. 마지막 단계는 추출한 데이터를 내보내 추가 활용하는 것입니다.

7단계: 스크랩한 검색 결과를 CSV로 내보내기

이 단계에서 바이두 검색 결과는 Python 리스트에 저장됩니다. 다른 팀이나 도구가 데이터를 활용할 수 있도록 Python 내장 csv 라이브러리를 사용해 CSV 파일로 내보내세요:

with open("baidu_serp_results.csv", mode="w", newline="", encoding="utf-8") as csvfile:
    # 첫 번째 항목에서 필드 이름을 동적으로 읽음
    fieldnames = list(serp_results[0].keys())

    # CSV 라이터 초기화
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    # 헤더 작성 및 출력 CSV 파일 채우기
    writer.writeheader()
    writer.writerows(serp_results)

csv를 반드시 임포트하세요:

import csv

이렇게 하면 바이두 스크래퍼가 모든 스크래핑 결과를 CSV 형식으로 포함하는 baidu_serp_results.csv라는 출력 파일을 생성합니다. 미션 완료!

8단계: 모든 것을 통합하기

scraper.py 에 포함된 최종 코드는 다음과 같습니다:

# pip install playwright
# python -m playwright install

from playwright.sync_api import sync_playwright
from urllib.parse import urlencode
import csv

# 스크랩된 데이터 저장 위치
serp_results = []

with sync_playwright() as p:
    # 헤드리스 모드에서 크로미움 인스턴스 초기화
    browser = p.chromium.launch(headless=True)  # 디버깅을 위해 브라우저를 보려면 headless=False 설정
    page = browser.new_page()

    # 바이두 검색 페이지의 기본 URL
    base_url = "https://www.baidu.com/s"

    # 검색 키워드/키프레이즈
    search_query = "bright data"
    params = {"wd": search_query}

    # 바이두 SERP URL 생성
    url = f"{base_url}?{urlencode(params)}"

    # 브라우저에서 대상 페이지 방문
    page.goto(url)

    # 모든 검색 결과 요소 선택
    search_result_elements = page.locator(".result")
    for search_result_element in search_result_elements.all():
        # 데이터 파싱 로직
        link_element = search_result_element.locator(".sc-link")
        link = link_element.get_attribute("href")
        title = link_element.inner_text()

        description_element = search_result_element.locator("[data-module='abstract']")
        description = description_element.inner_text() if description_element.count() > 0 else ""

        image_element = search_result_element.locator(".sc-image img")
        image = image_element.get_attribute("src") if image_element.count() > 0 else None

        official_element = search_result_element.locator("a[href^='https://aiqicha.baidu.com/feedback/official']")
        official = official_element.count() > 0

        # 스크랩된 데이터로 새 검색 결과 객체 채우기
        serp_result = {
            "title": title.strip(),
            "href": link.strip(),
            "description": description.strip(),
            "image": image.strip() if image else "",
            "official": official
        }
        # 스크랩한 바이두 SERP 결과를 리스트에 추가
        serp_results.append(serp_result)

    # 브라우저 닫기 및 리소스 해제
    browser.close()

with open("baidu_serp_results.csv", mode="w", newline="", encoding="utf-8") as csvfile:
    # 첫 번째 항목에서 필드 이름을 동적으로 읽음
    fieldnames = list(serp_results[0].keys())

    # CSV 라이터 초기화
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    # 헤더 작성 및 출력 CSV 파일 채움
    writer.writeheader()
    writer.writerows(serp_results)

와! 고작 70줄 정도의 코드로 바이두 데이터 스크래핑 스크립트를 완성했네요.

다음 명령어로 스크립트를 테스트하세요:

python scraper.py

프로젝트 폴더에 baidu_serp_results.csv 파일이 생성됩니다. 파일을 열어 바이두 검색 결과에서 추출된 구조화된 데이터를 확인하세요:

The baidu_serp_results.csv produced by the script

참고: 추가 결과를 스크래핑하려면 페이지 매김 처리를 위해 pn 쿼리 매개변수를 사용하여 이 과정을 반복하세요.

자, 이제 완성! 구조화되지 않은 바이두 검색 결과를 구조화된 CSV 파일로 성공적으로 변환했습니다.

[추가] 차단 회피를 위한 원격 브라우저 서비스 활용

위 스크레이퍼는 소규모 실행에는 적합하지만 확장성이 떨어집니다. 동일 IP에서 과도한 트래픽이 감지되면 바이두는 요청을 차단하거나 오류 페이지/인증 절차를 반환합니다. 다수의 로컬 크로미움 인스턴스 실행은 리소스(대용량 RAM)를 많이 소모하며 관리도 어렵습니다.

확장성이 뛰어나고 관리가 쉬운 해결책은 Playwright 인스턴스를 Bright Data의 Browser API와 같은 원격 브라우저 서비스(Browser-as-a-Service) 스크래핑 솔루션에 연결하는 것입니다. 이 솔루션은 자동 프록시 회전, CAPTCHA 처리 및 봇 방지 우회, 지문 인식 문제를 피하기 위한 실제 브라우저 인스턴스, 무제한 확장성을 제공합니다.

Bright Data 브라우저 API 설정 가이드를 따라 진행하면 다음과 같은 WSS 연결 문자열을 얻게 됩니다:

wss://<BRIGHT_DATA_PROXY_USERNAME>:<BRIGHT_DATA_PROXY_PASSWORD>@brd.superproxy.io:9222
The Browser API product page in your Bright Data account

해당 WSS URL을 사용하여 CDP(Chrome DevTools Protocol)를 통해 Playwright를 원격 브라우저 인스턴스에 연결하세요:

wss_url = "wss://<BRIGHT_DATA_PROXY_USERNAME>:<BRIGHT_DATA_PROXY_PASSWORD>@brd.superproxy.io:9222"
browser = playwright.chromium.connect_over_cdp(wss_url)
page = browser.new_page()
# ...

이제 Playwright의 Baidu 요청은 Bright Data의 Browser API 원격 인프라를 통해 라우팅됩니다. 이 인프라에는 1억 5천만 개의 IP를 보유한 주거용 프록시 네트워크와 실제 브라우저 인스턴스가 지원됩니다. 이를 통해 각 세션마다 새로운 IP를 보장하고 현실적인 브라우저 핑거프린팅을 구현합니다.

접근법 #2: Bright Data의 SERP API 사용

이 장에서는 Bright Data의 올인원 Baidu SERP API를 사용하여 프로그래밍 방식으로 검색 결과를 가져오는 방법을 살펴보겠습니다.

참고: 간결성을 위해 요청 라이브러리가 설치된 Python 프로젝트가 이미 존재한다고 가정합니다.

1단계: Bright Data 계정에서 SERP API 영역 설정

바이두 검색 결과를 스크래핑하기 위해 Bright Data에서 SERP API 제품을 설정하는 것으로 시작합니다. 먼저 Bright Data 계정을 생성하거나, 이미 계정이 있다면 로그인하세요.

더 빠른 설정을 위해 Bright Data의 공식 SERP API “빠른 시작” 가이드를 참조할 수 있습니다. 그렇지 않으면 아래 단계를 계속 진행하세요.

로그인 후 Bright Data 계정의 “프록시 및 스크래핑”으로 이동하여 제품 페이지로 접근하세요:

Note the serp_api zone in the “My zones” table

설정된 Bright Data 제품이 나열된 “My Zones” 테이블을 확인하세요. 활성 SERP API 존이 이미 존재한다면 바로 시작할 수 있습니다. 존 이름(예: serp_api)을 복사해 두세요. 나중에 필요할 것입니다.

SERP API 존이 존재하지 않는 경우, “스크래핑 솔루션” 섹션으로 스크롤하여 “SERP API” 카드의 “존 생성”을 클릭하세요:

Creating a new “SERP API” zone

존에 이름을 지정하고(예: serp-api) “추가” 버튼을 클릭하세요:

Pressing the “Add” button

다음으로 해당 존의 제품 페이지로 이동하여 스위치를 “활성화됨”으로 전환하여 활성화되었는지 확인하세요:

Making sure the zone is enabled

잘하셨습니다! Bright Data SERP API 영역이 성공적으로 구성되어 사용 준비가 완료되었습니다.

2단계: Bright Data API 키 획득

SERP API 요청 인증을 위한 권장 방법은 Bright Data API 키를 사용하는 것입니다. 아직 생성하지 않았다면 Bright Data 공식 가이드를 따라 API 키를 생성하세요.

SERP API에 POST 요청을 할 때, 다음과 같이 Authorization 헤더에 API 키를 포함하세요:

"Authorization: Bearer <YOUR_BRIGHT_DATA_API_KEY>"

이제 Python 스크립트에서 requests모듈이나 다른 Python HTTP 클라이언트를 사용해 Bright Data의 SERP API를 호출하는 데 필요한 모든 준비가 완료되었습니다.

이제 모든 것을 결합해 보겠습니다!

3단계: SERP API 호출

Python에서 Bright Data SERP API를 활용하여 키워드 “bright data”에 대한 바이두 검색 결과를 가져옵니다:

# pip install requests

import requests
from urllib.parse import urlencode

# Bright Data 인증 정보 (TODO: 본인의 값으로 대체)
bright_data_api_key = "<YOUR_BRIGHT_DATA_API_KEY>"
bright_data_serp_api_zone_name = "<YOUR_SERP_API_ZONE_NAME>" # (예: "serp_api") 

# 바이두 검색 페이지 기본 URL
base_url = "https://www.baidu.com/s"

# 검색 키워드/키프레이즈
search_query = "bright data"
params = {"wd": search_query}

# 바이두 SERP URL 생성
url = f"{base_url}?{urlencode(params)}"

# Bright Data의 SERP API에 POST 요청 전송
response = requests.post(
    "https://api.brightdata.com/request",
    headers={
        "Authorization": f"Bearer {bright_data_api_key}",
        "Content-Type": "application/json"
    },
    json={
        "zone": bright_data_serp_api_zone_name,
        "url": url,
        "format": "raw"
    })


# 완전히 렌더링된 HTML 가져오기
html = response.text

# 파싱 로직은 여기에...

다른 예시는 GitHub의 “Bright Data SERP API Python 프로젝트” 를 참고하세요.

Bright Data SERP API는 자바스크립트 렌더링을 처리하고, 자동 IP 로테이션을 위한 프록시 네트워크와 통합되며, 브라우저 지문 인식, CAPTCHA 등 스크래핑 방지 조치를 관리합니다. 이는 기본 HTTP 클라이언트(예: requests)로 바이두를 스크래핑할 때 일반적으로 발생하는 “网络不给力,请稍后重试”(“네트워크 상태가 좋지 않습니다. 잠시 후 다시 시도해 주세요.”) 오류 페이지를 만나지 않음을 의미합니다.

간단히 말해, html 변수에는 완전히 렌더링된 바이두 검색 결과 페이지가 담겨 있습니다. 다음 명령어로 HTML을 출력하여 확인하세요:

print(html)

아래와 같은 출력이 표시됩니다:

The HTML page returned by SERP API

이제 첫 번째 접근법에서 설명한 대로 HTML을 파싱하여 필요한 바이두 검색 데이터를 추출할 수 있습니다. 약속한 대로 Bright Data SERP API는 차단 현상을 방지하고 무제한 확장성을 제공합니다!

접근법 #3: 웹 MCP 서버 통합

SERP API(및 기타 많은 Bright Data 제품)는 Bright Data 웹 MCP의 search_engine 도구로도 접근 가능하다는 점을 기억하세요.

오픈소스 웹 MCP 서버는 바이두 스크래핑을 포함한 Bright Data의 웹 데이터 검색 솔루션에 AI 친화적인 접근을 제공합니다. 특히 search_enginescrape_as_markdown 도구는 웹 MCP 무료 계층에서 이용 가능하여 AI 에이전트나 워크플로우에 비용 없이 사용할 수 있습니다.

Web MCP를 AI 솔루션에 통합하려면 로컬에 Node.js가 설치되어 있고 다음과 같은 구성 파일만 있으면 됩니다:

{
  "mcpServers": {
    "Bright Data Web MCP": {
      "command": "npx",
      "args": ["-y", "@brightdata/mcp"],
      "env": {
        "API_TOKEN": "<YOUR_BRIGHT_DATA_API_KEY>"
      }
    }
  }
}

예를 들어, 이 설정은 Claude Desktop 및 Code(그리고 다른 많은 AI 라이브러리 및 솔루션)와 호환됩니다. 문서에서 다른 통합 기능을 확인하세요.

또는 로컬 사전 설정 없이 Bright Data 원격 서버를 통해 연결할 수도 있습니다.

이 통합을 통해 AI 기반 워크플로우 또는 에이전트가 Baidu(또는 기타 지원되는 검색 엔진)에서 SERP 데이터를 자율적으로 가져와 즉시 처리할 수 있습니다.

결론

이 튜토리얼에서는 바이두 스크래핑을 위한 세 가지 권장 방법을 살펴보았습니다:

  1. 사용자 정의 스크레이퍼 사용.
  2. 바이두 SERP API 활용.
  3. Bright Data 웹 MCP를 통한 방법.

시연된 바와 같이, 차단 없이 대규모로 바이두를 크롤링하는 가장 신뢰할 수 있는 방법은 구조화된 크롤링 솔루션을 사용하는 것입니다. 이는 Bright Data 제품과 같은 고급 봇 우회 기술과 강력한 프록시 네트워크로 뒷받침되어야 합니다.

무료 Bright Data 계정을 생성하고 오늘 바로 스크래핑 솔루션을 탐색해 보세요!