피드로 돌아가기
How to Scrape Goodreads in 2026: Books, Reviews, Author Profiles, and Ratings
Dev.toDev.to
Backend

How to Scrape Goodreads in 2026: Books, Reviews, Author Profiles, and Ratings

개발자가 Python과 BeautifulSoup으로 Goodreads에서 도서·리뷰·저자 프로필 데이터를 JSON-LD 구조 기반으로 추출하는 스크래핑 방법 제시

agenthustler2026년 3월 26일10beginner

Context

Goodreads는 40억 개 이상의 도서 메타데이터, 리뷰, 평점을 보유하고 있으나, 이 데이터를 추천 엔진 구축, 트렌드 분석, 자동화된 독서 목록 생성 등 다양한 목적으로 대규모 추출해야 하는 상황이 있다.

Technical Solution

  • JSON-LD 구조 데이터 파싱: HTML 셀렉터 대신 <script type="application/ld+json"> 태그에서 title, author, aggregateRating, reviewCount, ISBN, numberOfPages, description을 추출
  • 도서 상세 정보 수집: requests와 BeautifulSoup을 이용해 book_url에서 구조화된 JSON 데이터 자동 파싱
  • 저자 프로필 크롤링: tr[itemtype='http://schema.org/Book'] 셀렉터로 저자 페이지의 도서 목록(제목, URL, 평점)을 최대 10개까지 추출
  • 리뷰 데이터 마이닝: [data-testid='reviewCard'] 요소에서 별점 개수, 리뷰 텍스트(500자 제한), 리뷰어명을 추출하고 감정 분석에 활용
  • 도서 목록 및 셀프 스크래핑: 페이지네이션을 통해 Goodreads 큐레이션 리스트에서 다중 페이지(최대 3페이지 예시)의 도서 정보 수집
  • CSV 포맷 데이터 저장: 수집된 도서 정보를 csv.DictWriter를 사용해 구조화된 파일로 저장
  • 프록시 기반 IP 로테이션: proxy_url을 통해 요청을 라우팅해 반복적 접근 차단 방지
  • User-Agent 헤더 설정: Chrome 131.0.0.0 기반 User-Agent를 포함해 브라우저 식별

Impact

아티클에 정량적 성능 수치가 명시되지 않음.

Key Takeaway

Goodreads 스크래핑 시 HTML 셀렉터 기반 파싱보다 JSON-LD 구조 데이터를 우선 활용하면 안정성이 높으며, 프록시 로테이션과 합리적인 요청 지연을 조합하면 대규모 데이터 수집 중 IP 차단을 방지할 수 있다.


도서 추천 엔진 구축이나 독서 트렌드 분석이 필요한 개발 팀에서 BeautifulSoup의 JSON-LD 파싱(script[type='application/ld+json'] 추출) 패턴을 적용하면, 페이지 레이아웃 변경에 덜 취약한 스크래퍼를 구축할 수 있으며, 프록시 서비스(ScrapeOps, ThorData)와 요청 간 random.sleep() 지연을 결합하면 차단 없이 도서, 저자, 리뷰 데이터를 대규모로 수집 가능하다.

원문 읽기