파이썬으로 eBay 스크래핑하여 가격 모니터링하는 방법

가격 모니터링 및 비교를 위한 상품 데이터 추출용 eBay 스크레이퍼 구축 방법을 알아봅시다.
1 분 읽기
How To Scrape eBay with Python

이 튜토리얼에서는 다음을 다룹니다:

  • 웹에서 전자상거래 데이터를 스크래핑하는 이유는 무엇인가요?
  • eBay 스크래핑 라이브러리 및 도구
  • Beautiful Soup을 이용한 eBay 상품 데이터 스크래핑

웹에서 전자상거래 데이터를 스크래핑해야 하는 이유는 무엇인가요?

전자상거래 데이터 스크래핑을 통해 다양한 시나리오와 활동에 유용한 정보를 얻을 수 있습니다. 여기에는 다음이 포함됩니다:

  • 가격 모니터링: 전자상거래 웹사이트를 추적함으로써 기업은 제품 가격을 실시간으로 모니터링할 수 있습니다. 이를 통해 가격 변동을 파악하고 트렌드를 발견하며 가격 전략을 적절히 조정할 수 있습니다. 소비자의 경우, 최적의 거래를 찾아 비용을 절감하는 데 도움이 됩니다.
  • 경쟁사 분석: 경쟁사의 제품 라인업, 가격, 할인 및 프로모션 정보를 수집함으로써 자체 가격 전략, 제품 구성 및 마케팅 캠페인에 대한 데이터 기반 의사 결정을 내릴 수 있습니다.
  • 시장 조사: 전자상거래 데이터는 시장 동향, 소비자 선호도, 수요 패턴에 대한 귀중한 통찰력을 제공합니다. 이 정보를 데이터 분석 프로세스의 원천으로 활용하여 신흥 트렌드를 연구하고 고객 행동을 이해할 수 있습니다.
  • 감정 분석: 전자상거래 사이트에서 고객 리뷰를 스크래핑함으로써 고객 만족도, 제품 피드백, 개선이 필요한 영역에 대한 통찰력을 얻을 수 있습니다.

전자상거래 스크래핑과 관련하여 eBay가 가장 인기 있는 선택지인 데는 적어도 세 가지 이유가 있습니다:

  1. 다양한 제품을 보유하고 있습니다.
  2. 경매 및 입찰 시스템을 기반으로 하여 아마존 및 유사 플랫폼보다 훨씬 많은 데이터를 수집할 수 있습니다.
  3. 동일한 상품에 대해 여러 가격(경매 + 즉시 구매!)이 존재합니다.

eBay를 스크래핑하면 가격 모니터링, 비교 또는 분석 전략을 뒷받침할 풍부한 정보에 접근할 수 있습니다.

eBay 스크래핑 라이브러리 및 도구

파이썬은 사용 편의성, 간단한 구문, 방대한 라이브러리 생태계 덕분에 스크래핑에 가장 적합한 언어 중 하나로 꼽힙니다. 따라서 eBay 스크래핑에 선택될 프로그래밍 언어가 될 것입니다. 파이썬으로 웹 스크래핑을 수행하는 방법에 대한 심층 가이드를 살펴보세요.

이제 다양한 스크래핑 라이브러리 중에서 적합한 것을 선택해야 합니다. 올바른 결정을 내리기 위해 브라우저에서 eBay를 살펴보세요. 페이지가 수행하는 AJAX 호출을 분석하면 사이트의 대부분의 데이터가 서버가 반환하는 HTML 문서에 내장되어 있음을 알 수 있습니다.

이는 서버에 대한 요청을 재현하는 간단한 HTTP 클라이언트와 HTML 파서만으로도 충분함을 의미합니다. 따라서 다음을 추천합니다:

  • Requests: 파이썬에서 가장 널리 사용되는 HTTP 클라이언트 라이브러리입니다. HTTP 요청 전송 및 응답 처리를 간소화하여 웹 서버에서 페이지 콘텐츠를 쉽게 가져올 수 있게 합니다.
  • Beautiful Soup: 모든 기능을 갖춘 HTML 및 XML 파싱 파이썬 라이브러리입니다. DOM 탐색 및 요소에서 데이터 추출을 위한 강력한 메서드를 제공하므로 주로 웹 스크래핑에 사용됩니다.

Requests와 Beautiful Soup 덕분에 파이썬으로 대상 사이트를 스크래핑할 수 있습니다. 그 방법을 살펴보겠습니다!

Beautiful Soup을 활용한 eBay 상품 데이터 스크래핑

이 단계별 튜토리얼을 따라 eBay 웹 스크래핑 파이썬 스크립트를 구축하는 방법을 배워보세요.

1단계: 시작하기

가격 스크래핑을 구현하려면 다음 전제 조건을 충족해야 합니다:

다음으로, 아래 명령어를 실행하여 ebay-scraper라는 가상 환경으로 Python 프로젝트를 초기화하세요:

mkdir ebay-scraper

cd ebay-scraper

python -m venv env

프로젝트 폴더로 이동하여 다음 코드 조각이 포함된 scraper.py 파일을 추가하세요:

print('Hello, World!')

이 스크립트는 “Hello, World!”만 출력하는 샘플이지만, 곧 eBay 스크래핑 로직이 포함될 예정입니다.

다음 명령어로 실행하여 정상 작동하는지 확인하세요:

python scraper.py

터미널에 다음과 같은 결과가 표시됩니다:

Hello, World!

좋습니다! 이제 파이썬 프로젝트를 갖게 되었습니다!

2단계: 스크래핑 라이브러리 설치

웹 스크래핑을 수행하는 데 필요한 라이브러리를 프로젝트의 종속성에 추가할 차례입니다. 프로젝트 폴더에서 아래 명령어를 실행하여 Beautiful SoupRequests 패키지를 설치하세요:

pip install beautifulsoup4 requests

scraper.py 파일에 라이브러리를 임포트하고 eBay에서 데이터를 추출할 준비를 하세요:

import requests

from bs4 import BeautifulSoup

# 스크래핑 로직...

Python IDE에서 오류가 발생하지 않는지 확인하세요. 이제 스크래핑을 통한 가격 모니터링 구현 준비가 완료되었습니다!

3단계: 대상 웹 페이지 다운로드

eBay 사용자라면 상품 페이지 URL이 아래 형식을 따르는 것을 눈치챘을 것입니다:

https://www.ebay.com/itm/<ITM_ID>

보시다시피, 이는 상품 ID에 따라 변경되는 동적 URL입니다.

예를 들어, 다음은 eBay 상품의 URL입니다:

https://www.ebay.com/itm/225605642071?epid=26057553242&hash=item348724e757:g:~ykAAOSw201kD1un&amdata=enc%3AAQAIAAAA4OMICjL%2BH6HBrWqJLiCPpCurGf8qKkO7CuQwOkJClqK%2BT2B5ioN3Z9pwm4r7tGSGG%2FI31uN6k0IJr0SEMEkSYRrz1de9XKIfQhatgKQJzIU6B9GnR6ZYbzcU8AGyKT6iUTEkJWkOicfCYI5N0qWL8gYV2RGT4zr6cCkJQnmuYIjhzFonqwFVdYKYukhWNWVrlcv5g%2BI9kitSz8k%2F8eqAz7IzcdGE44xsEaSU2yz%2BJxneYq0PHoJoVt%2FBujuSnmnO1AXqjGamS3tgNcK5Tqu36QhHRB0tiwUfAMrzLCOe9zTa%7Ctkp%3ABFBMmNDJgZJi

여기서 225605642071은 해당 상품의 고유 식별자입니다. 쿼리 매개변수는 페이지 방문에 필수적이지 않다는 점에 유의하세요. 이를 제거해도 eBay는 여전히 상품 페이지를 정상적으로 로드합니다.

스크립트에 대상 페이지를 하드코딩하는 대신, 명령줄 인자로서 아이템 ID를 읽어오도록 만들 수 있습니다. 이렇게 하면 어떤 상품 페이지의 데이터든 스크래핑할 수 있습니다.

다음과 같이 scraper.py를 업데이트하여 이를 구현하세요:

import requests

from bs4 import BeautifulSoup

import sys

# CLI 매개변수가 없는 경우

if len(sys.argv) <= 1:

    print('아이템 ID 인수가 누락되었습니다!')

    sys.exit(2)

# CLI 인수에서 아이템 ID 읽기

item_id = sys.argv[1]

# 대상 상품 페이지 URL 생성

url = f'https://www.ebay.com/itm/{item_id}'

# 스크래핑 로직...

예를 들어 상품 225605642071을 스크래핑하려면 다음 명령어로 스크레이퍼를 실행하세요:

python scraper.py 225605642071

sys 모듈 덕분에 명령줄 인수를 활용할 수 있습니다. sys.argv의 첫 번째 요소는 스크립트 이름(scraper.py)입니다. 상품 ID를 얻으려면 인덱스 1번 요소를 대상으로 지정해야 합니다.

CLI에서 아이템 ID를 입력하지 않으면 아래 오류와 함께 애플리케이션이 실패합니다:

아이템 ID 인수가 누락되었습니다!

반면, CLI 매개변수를 읽어서 f-string에 사용하면 스크래핑할 제품의 대상 URL을 생성합니다. 이 경우 URL에는 다음과 같은 내용이 포함됩니다:


https://www.ebay.com/itm/225605642071

이제 requests를 사용하여 다음 코드 줄로 해당 웹 페이지를 다운로드할 수 있습니다:

page = requests.get(url)

배경에서 request.get()은 매개변수로 전달된 URL에 HTTP GET 요청을 수행합니다. page에는 대상 페이지의 HTML 콘텐츠를 포함한 eBay 서버의 응답이 저장됩니다.

훌륭합니다! 이제 여기서 데이터를 추출하는 방법을 알아봅시다.

4단계: HTML 문서 파싱

page.text에는 서버가 반환한 HTML 문서가 포함됩니다. 이를 BeautifulSoup() 생성자에 전달하여 파싱합니다:

soup = BeautifulSoup(page.text, 'html.parser')

두 번째 매개변수는 Beautiful Soup이 사용할 파서를 지정합니다. 익숙하지 않다면, html.parser는 Python 내장 HTML 파서의 이름입니다.

이제 soup 변수는 DOM에서 요소를 선택하는 데 유용한 메서드를 제공하는 트리 구조를 저장합니다. 가장 널리 사용되는 메서드는 다음과 같습니다:

  • find(): 매개변수로 전달된 선택자 조건과 일치하는 첫 번째 HTML 요소를 반환합니다.
  • find_all(): 입력된 선택기 전략에 맞는 HTML 요소들의 리스트를 반환합니다.
  • select_one(): 입력된 CSS 선택자와 일치하는 HTML 요소를 반환합니다.
  • select(): 매개변수로 전달된 CSS 선택자와 일치하는 HTML 요소 목록을 반환합니다.

태그, ID, CSS 클래스 등으로 HTML 요소를 선택하는 데 사용하세요. 그런 다음 해당 속성과 텍스트 콘텐츠에서 데이터를 추출할 수 있습니다. 방법을 확인해 보세요!

5단계: 상품 페이지 검사

효과적인 데이터 스크래핑 전략을 수립하려면 먼저 대상 웹 페이지의 구조를 숙지해야 합니다. 브라우저를 열고 eBay의 여러 제품을 방문해 보세요.

먼저 제품 카테고리에 따라 페이지에 포함된 정보가 다르다는 점을 알 수 있습니다. 전자제품의 경우 기술 사양을 확인할 수 있습니다.

technical specifications.

의류 제품을 방문하면 사이즈와 색상 옵션이 표시됩니다.

eBay clothing products available

웹 페이지 구조의 이러한 불일치는 스크래핑을 다소 어렵게 만듭니다. 그러나 제품 가격 및 배송비와 같은 일부 정보 필드는 모든 페이지에 공통적으로 존재합니다.

브라우저의 개발자 도구(DevTools)도 숙지하세요. 관심 있는 데이터가 포함된 HTML 요소를 마우스 오른쪽 버튼으로 클릭하고 “검사”를 선택하세요. 그러면 아래와 같은 창이 열립니다:

browser's DevTools

여기서 페이지의 DOM 구조를 탐색하고 효과적인 선택기 전략을 정의하는 방법을 이해할 수 있습니다.

개발자 도구를 활용해 제품 페이지를 충분히 분석해 보세요.

6단계: 가격 데이터 추출

먼저, 스크래핑할 데이터를 저장할 데이터 구조가 필요합니다. Python 사전(dictionary) 을 다음과 같이 초기화하세요:

item = {}

이전 단계에서 확인하셨듯이 가격 데이터는 이 섹션에 있습니다:

price data is in this section

HTML 가격 요소를 확인하세요:

Inspect the HTML price element:

아래 CSS 선택자로 제품 가격을 가져올 수 있습니다:

.x-price-primary span[itemprop="price"]

통화 정보는 다음과 같이 가져옵니다:

.x-price-primary span[itemprop="priceCurrency"]

이 선택자를 Beautiful Soup에 적용하고 원하는 데이터를 다음과 같이 추출합니다:

price_html_element = soup.select_one('.x-price-primary span[itemprop="price"]')

price = price_html_element['content']

currency_html_element = soup.select_one('.x-price-primary span[itemprop="priceCurrency"]')

currency = currency_html_element['content']

이 코드 조각은 가격과 통화의 HTML 요소를 선택한 후, 해당 content 속성에 포함된 문자열을 수집합니다.

위에서 추출한 가격은 원하는 상품을 구매하기 위해 지불해야 하는 전체 가격의 일부일 뿐임을 유의하십시오. 여기에는 배송비도 포함됩니다.

배송 요소를 확인해 보세요:

Inspect the shipping element:

이번에는 원하는 데이터를 추출하는 것이 조금 까다롭습니다. 해당 요소를 쉽게 가져올 수 있는 CSS 선택자가 없기 때문입니다. .ux-labels-values__labels div를 하나씩 반복 처리할 수 있습니다. 현재 요소에 “Shipping:” 문자열이 포함되어 있다면, DOM에서 다음 형제 요소에 접근하여 .ux-textspans–BOLD에서 가격을 추출할 수 있습니다:

label_html_elements = soup.select('.ux-labels-values__labels')

for label_html_element in label_html_elements:

    if 'Shipping:' in label_html_element.text:

        shipping_price_html_element = label_html_element.next_sibling.select_one('.ux-textspans--BOLD')

        # 배송비 HTML 요소가 존재할 경우

        if shipping_price_html_element is not None:

            # 텍스트 콘텐츠에서 가격의 부동 소수점 숫자 추출

            shipping_price = re.findall("d+[.,]d+", shipping_price_html_element.text)[0]

        break

배송비 요소는 다음과 같은 형식으로 원하는 데이터를 포함합니다:

US $105.44

가격을 추출하려면 re.findall() 메서드와 정규 표현식을 사용할 수 있습니다. 스크립트의 import 섹션에 다음 줄을 추가하는 것을 잊지 마세요:

import re 

수집한 데이터를 item 사전(dictionary)에 추가하세요:

item['price'] = price

item['shipping_price'] = shipping_price

item['currency'] = currency

다음으로 출력하세요:

print(item)

결과는 다음과 같습니다:

{'price': '499.99', 'shipping_price': '72.58', 'currency': 'USD'}

이 정도면 Python으로 가격 추적 프로세스를 구현하기에 충분합니다. 하지만 eBay 상품 페이지에는 유용한 정보가 훨씬 더 많습니다. 따라서 이를 추출하는 방법을 배우는 것도 가치 있습니다!

7단계: 상품 상세 정보 가져오기

“이 상품에 대해” 탭을 살펴보면 다음과 같은 흥미로운 데이터가 많이 포함되어 있음을 알 수 있습니다:

About this item” tab

제품마다 섹션과 필드가 다르기 때문에, 이를 모두 스마트한 접근 방식으로 스크래핑할 방법을 찾아야 합니다.

자세히 살펴보면 가장 중요한 섹션은 “상품 세부 정보”와 “이 상품에 대해”입니다. 이 두 섹션은 대부분의 상품에 존재합니다. 이 중 하나를 살펴보면 다음과 같이 선택할 수 있습니다:

.section-title

explore element

섹션을 선택한 후, 해당 DOM 구조를 살펴보세요:

explore its DOM structure: 

여러 행으로 구성되어 있으며, 각 행에는 .ux-layout-section-evo__col 요소가 포함되어 있습니다. 이 요소들은 두 가지 요소를 담고 있습니다:

  • .ux-labels-values__labels: 속성 이름.
  • .ux-labels-values__values: 속성 값.

이제 다음과 같이 프로그래밍 방식으로 모든 상세 섹션 정보를 스크래핑할 준비가 되었습니다:

section_title_elements = soup.select('.section-title')

for section_title_element in section_title_elements:

    if 'Item specifics' in section_title_element.text or 'About this product' in section_title_element.text:

        # 전체 섹션을 포함하는 상위 요소 가져오기

        section_element = section_title_element.parent

        for section_col in section_element.select('.ux-layout-section-evo__col'):

            print(section_col.text)

            col_label = section_col.select_one('.ux-labels-values__labels')

            col_value = section_col.select_one('.ux-labels-values__values')

            # 두 요소가 모두 존재하는 경우

            if col_label is not None and col_value is not None:

                item[col_label.text] = col_value.text

이 코드는 각 HTML 세부 정보 필드 요소를 순회하며 각 제품 속성과 연관된 키-값 쌍을 item 사전(dictionary)에 추가합니다.

for 루프가 끝날 때 item에는 다음이 포함됩니다:

{'price': '499.99', 'shipping_price': '72.58', 'currency': 'USD', 'Condition': "New: A brand-new, unused, unopened, undamaged item in its original packaging (where packaging is applicable). 제품이 수제이거나 인쇄되지 않은 상자나 비닐 봉투와 같이 비소매용 포장으로 제조업체에서 포장한 경우가 아닌 한, 포장은 소매점에서 볼 수 있는 것과 동일해야 합니다. 자세한 내용은 판매자의 목록을 참조하십시오. 모든 상태 정의 보기새 창 또는 탭에서 열기 ", '제조사 보증': '1년', '상품 높이': '16.89인치', '상품 길이': '18.5인치', '상품 깊이': '6.94인치', 'Item Weight': '15.17 lbs', 'UPC': '0711719558255', 'Brand': 'Sony', 'Type': 'Home Console', 'Region Code': 'Region Free', 'Platform': 'Sony PlayStation 5', 'Color': '화이트', '모델': '소니 플레이스테이션 5 블루레이 에디션', '연결 방식': 'HDMI', '제조사 부품 번호(MPN)': '1000032624', '주요 기능': '3D 오디오 기술, 블루레이 호환, Wi-Fi 지원, 인터넷 브라우징', '저장 용량': '825 GB', '해상도': '4K (UHD)', 'eBay 제품 ID (ePID)': '26057553242', '제조사 색상': '화이트', '에디션': '갓 오브 워 라그나로크 번들', '출시 연도': '2022'}

훌륭합니다! 데이터 추출 목표를 달성하셨습니다!

8단계: 스크랩한 데이터를 JSON으로 내보내기

현재 스크랩된 데이터는 Python 사전(dictionary)에 저장되어 있습니다. 공유 및 읽기 편의를 위해 JSON으로 내보내려면 다음을 사용하세요:

import json

# 스크래핑 로직...

with open('product_info.json', 'w') as file:

    json.dump(item, file)

먼저 open()으로 product_info.json 파일을 초기화해야 합니다. 그런 다음 json.dump()를 사용해 item 사전의 JSON 표현을 출력 파일에 기록할 수 있습니다. Python에서 데이터를 JSON으로 파싱하고 직렬화하는 방법에 대해 자세히 알아보려면 저희 글을 참고하세요.

json 패키지는 Python 표준 라이브러리에 포함되어 있으므로, 목표를 달성하기 위해 별도의 종속성을 설치할 필요조차 없습니다.

훌륭합니다! 웹페이지에 포함된 원시 데이터에서 시작하여 이제 반구조화된 JSON 데이터를 얻었습니다. 이제 전체 eBay 스크레이퍼를 살펴볼 차례입니다.

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

다음은 전체 scraper.py 스크립트입니다:

import requests

from bs4 import BeautifulSoup

import sys

import re

import json

# CLI 인수가 없는 경우

if len(sys.argv) <= 1:

    print('아이템 ID 인수가 누락되었습니다!')

    sys.exit(2)

# CLI 인수로 아이템 ID 읽기

item_id = sys.argv[1]

# 대상 상품 페이지 URL 생성

url = f'https://www.ebay.com/itm/{item_id}'

# 대상 페이지 다운로드

page = requests.get(url)

# 서버에서 반환된 HTML 문서 파싱

soup = BeautifulSoup(page.text, 'html.parser')

# 스크랩된 데이터를 담을 객체 초기화

item = {}

# 가격 스크래핑 로직

price_html_element = soup.select_one('.x-price-primary span[itemprop="price"]')

price = price_html_element['content']

currency_html_element = soup.select_one('.x-price-primary span[itemprop="priceCurrency"]')

currency = currency_html_element['content']

shipping_price = None

label_html_elements = soup.select('.ux-labels-values__labels')

for label_html_element in label_html_elements:

    if '배송비:' in label_html_element.text:

        shipping_price_html_element = label_html_element.next_sibling.select_one('.ux-textspans--BOLD')

        # 배송비 HTML 요소가 존재할 경우

        if shipping_price_html_element is not None:

            # 텍스트 콘텐츠에서 가격의 부동 소수점 숫자 추출

            shipping_price = re.findall("d+[.,]d+", shipping_price_html_element.text)[0]

        break

item['price'] = price

item['shipping_price'] = shipping_price

item['currency'] = currency

# 상품 상세 정보 스크래핑 로직

section_title_elements = soup.select('.section-title')

for section_title_element in section_title_elements:

    if 'Item specifics' in section_title_element.text or 'About this product' in section_title_element.text:

        # 전체 섹션을 포함하는 상위 요소 획득

        section_element = section_title_element.parent

        for section_col in section_element.select('.ux-layout-section-evo__col'):

            print(section_col.text)

            col_label = section_col.select_one('.ux-labels-values__labels')

            col_value = section_col.select_one('.ux-labels-values__values')

            # 두 요소가 모두 존재할 경우

            if col_label is not None and col_value is not None:

                item[col_label.text] = col_value.text

# 스크래핑된 데이터를 JSON 파일로 내보내기

with open('product_info.json', 'w') as file:

    json.dump(item, file, indent=4)

70줄 미만의 코드로 eBay 제품 데이터를 모니터링하는 웹 스크래퍼를 구축할 수 있습니다.

예를 들어, ID 225605642071로 식별되는 항목에 대해 다음 명령어로 실행합니다:

python scraper.py 225605642071

스크래핑이 완료되면 프로젝트 루트 폴더에 아래와 같은 product_info.json 파일이 생성됩니다:

{

    "price": "499.99",

    "shipping_price": "72.58",

    "currency": "USD",

    "Condition": "New: A brand-new, unused, unopened, undamaged item in its original packaging (where packaging is applicable). 제품이 수제품이거나 인쇄되지 않은 상자나 비닐 봉투와 같은 비소매용 포장으로 제조업체에서 포장한 경우가 아닌 한, 포장은 소매점에서 발견되는 것과 동일해야 합니다. 자세한 내용은 판매자의 상품 설명을 참조하십시오",

    "제조사 보증": "1년",

    "제품 높이": "16.89"",

    "제품 길이": "18.5인치",

    "제품 깊이": "6.94인치",

    "제품 무게": "15.17파운드",

    "UPC": "0711719558255",

    "브랜드": "소니",

    "종류": "홈 콘솔",

    "지역 코드": "지역 제한 없음",

    "플랫폼": "소니 플레이스테이션 5",

    "색상": "화이트",

    "모델": "소니 플레이스테이션 5 블루레이 에디션",

    "연결 방식": "HDMI",

    "MPN": "1000032624",

    "주요 기능": "3D 오디오 기술, 블루레이 호환, Wi-Fi 지원, 인터넷 브라우징",

    "저장 용량": "825 GB",

    "해상도": "4K (UHD)",

    "eBay 제품 ID (ePID)": "26057553242",

    "제조사 색상": "화이트",

    "에디션": "갓 오브 워 라그나로크 번들",

    "출시 연도": "2022"

}

축하합니다! 이제 파이썬으로 eBay 데이터를 스크래핑하는 방법을 배웠습니다!

결론

이 가이드에서는 eBay가 제품 가격 추적을 위한 최고의 스크래핑 대상인 이유와 그 방법을 알아보았습니다. 구체적으로 단계별 튜토리얼을 통해 상품 데이터를 가져올 수 있는 Python 스크래퍼를 구축하는 방법을 살펴보았습니다. 여기서 보았듯이 복잡하지 않으며 몇 줄의 코드만으로도 가능합니다.

동시에 eBay 페이지 구조가 얼마나 일관성이 없는지도 이해하셨을 겁니다. 따라서 여기서 만든 스크레이퍼는 한 상품에는 작동하더라도 다른 상품에는 작동하지 않을 수 있습니다. 또한 eBay의 UI는 자주 변경되어 스크립트를 지속적으로 유지 관리해야 합니다. 다행히도 저희 eBay 스크레이퍼 API를 사용하면 이를 피할 수 있습니다!

eBay 웹 스크래핑은 전혀 다루고 싶지 않지만 상품 데이터에는 관심이 있으신가요? eBay 데이터셋을 구매하세요.

다른 웹사이트 스크래핑에 관심이 있으신가요? 지금 등록하고 웹 스크래퍼 API를 사용해 보세요.

참고: 본 가이드는 작성 당시 저희 팀이 철저히 테스트했으나, 웹사이트가 코드와 구조를 자주 업데이트함에 따라 일부 단계가 예상대로 작동하지 않을 수 있습니다.