교보문고 ISBN으로 쪽수 추출하기

웹 스크래핑은 현대 데이터 수집 방식 중 하나로, 여러 웹사이트에서 유용한 정보를 자동으로 수집하는 방법입니다. 이번 글에서는 교보문고에서 ISBN을 통해 책의 쪽수를 추출하는 방법에 대해 상세히 설명드리겠습니다.

이 과정은 Python 프로그래밍 언어와 관련 라이브러리를 활용하여 진행됩니다. 특히, 교보문고는 한국의 대표적인 서점으로, 다양한 도서를 제공하고 있어 많은 사람들에게 유용한 데이터가 될 것입니다.

썸네일

웹 스크래핑의 기초

웹 스크래핑이란 웹 페이지에 있는 정보를 자동으로 수집하는 기술을 말합니다. 이 작업은 일반적으로 HTTP 요청을 통해 웹 페이지의 HTML을 가져오고, 이 HTML 문서에서 필요한 정보를 추출하는 방식으로 이루어집니다.

웹 스크래핑을 위해 필요한 기본 도구는 requestsBeautifulSoup입니다. requests는 웹 페이지의 HTML을 가져오는 데 사용되며, BeautifulSoup는 이 HTML 문서에서 원하는 데이터를 파싱하고 추출하는 데 유용합니다.

아래 표는 웹 스크래핑을 위한 주요 라이브러리와 그 기능을 정리한 것입니다.

라이브러리 기능
requests HTTP 요청을 통해 웹 페이지의 HTML을 가져옴
BeautifulSoup HTML 문서를 파싱하여 원하는 데이터를 추출
pandas 데이터 분석 및 조작을 위한 데이터프레임 제공

이 두 가지 도구를 활용하면 웹 페이지에서 특정 정보를 효과적으로 수집할 수 있습니다. 이제 이러한 도구를 사용하여 교보문고에서 ISBN으로 책의 쪽수를 추출하는 방법을 알아보겠습니다.

ISBN을 통한 도서 검색

교보문고의 웹사이트에서 특정 책을 검색하기 위해서는 ISBN(국제 표준 도서번호)을 활용할 수 있습니다. ISBN은 각 책마다 고유하게 부여되는 번호로, 도서의 식별에 매우 유용합니다.

교보문고의 검색 URL 구조는 다음과 같습니다.

https://product.kyobobook.co.kr/search?query={ISBN}

여기서 {ISBN} 부분에 검색하고자 하는 책의 ISBN을 삽입하면 해당 책의 정보가 담긴 페이지로 이동할 수 있습니다. 예를 들어, ISBN이 ‘9791162243664’인 도서의 URL은 다음과 같습니다.

https://product.kyobobook.co.kr/search?query=9791162243664

이 URL을 통해 도서 검색 결과 페이지의 HTML을 가져오고, 이후 이 HTML에서 도서 상세 페이지로의 링크를 추출하여 쪽수를 확인할 수 있습니다.

ISBN 도서명
9791162243664 혼자 공부하는 머신러닝+딥러닝

이제 이 ISBN을 사용하여 교보문고에서 도서를 검색하고, 해당 도서의 상세 페이지로 이동하는 방법을 알아보겠습니다.

다른 내용도 보러가기 #1

교보문고에서 도서 상세 페이지로 이동하기

도서 상세 페이지로 이동하기 위해서는 검색 결과 페이지의 HTML을 가져와야 합니다. 이를 위해 requests 라이브러리를 사용하여 URL에 GET 요청을 보냅니다.

아래는 Python 코드의 예시입니다.

“`python
import requests
from bs4 import BeautifulSoup

isbn = ‘9791162243664’
url = f’https://product.kyobobook.co.kr/search?query={isbn}’
response = requests.get(url)
soup = BeautifulSoup(response.text, ‘html.parser’)

book_link = soup.find(‘a’, class_=’gd_name’)[‘href’]
“`

위 코드는 ISBN을 기반으로 교보문고에서 도서를 검색한 후, 검색 결과 페이지에서 첫 번째 도서의 상세 페이지 링크를 추출합니다. find 메서드를 사용하여 특정 HTML 요소를 탐색하고, 원하는 정보를 쉽게 얻을 수 있습니다.

도서명 상세 페이지 링크
혼자 공부하는 머신러닝+딥러닝 https://product.kyobobook.co.kr/goods/9791162243664

이제 도서 상세 페이지 링크를 통해 해당 페이지로 이동하여 쪽수를 추출할 수 있습니다.

도서 상세 페이지에서 쪽수 추출하기

도서 상세 페이지에 접속하면, 페이지 내에서 쪽수 정보가 포함된 HTML 요소를 찾아야 합니다. 교보문고의 도서 상세 페이지 구조를 살펴보면, 쪽수는 ‘품목 정보’ 섹션에 위치해 있습니다.

이 섹션의 HTML 구조를 분석하여 쪽수를 추출하는 방법은 다음과 같습니다.

“`python
detail_url = f’https://product.kyobobook.co.kr{book_link}’
detail_response = requests.get(detail_url)
detail_soup = BeautifulSoup(detail_response.text, ‘html.parser’)

page_info = detail_soup.find(‘div’, id=’infoset_specific’)
page_count = None

for tr in page_info.find_all(‘tr’):
if ‘쪽수’ in tr.get_text():
page_count = tr.find(‘td’).get_text().split(‘|’)[0].strip() # ‘330쪽’ 등의 형식
break
“`

위 코드는 도서 상세 페이지에 접속한 후, ‘품목 정보’ 섹션에서 ‘쪽수’가 포함된 행을 찾아 쪽수를 추출하는 방식입니다. findfind_all 메서드를 사용하여 필요한 정보를 손쉽게 찾을 수 있습니다.

도서명 쪽수
혼자 공부하는 머신러닝+딥러닝 330

이제 교보문고에서 ISBN으로 도서 쪽수를 추출하는 기본적인 과정이 완료되었습니다.

스크래핑 자동화 및 최적화

위에서 설명한 방법은 단일 도서에 대한 쪽수를 추출하는 데 유용하지만, 여러 도서에 대해 이 작업을 반복해야 할 경우 효율적이지 않을 수 있습니다. 이를 해결하기 위해, 도서 리스트와 ISBN을 포함한 데이터프레임을 활용하여 반복적으로 스크래핑을 수행하는 방법을 소개하겠습니다.

“`python
import pandas as pd

isbn_list = [‘9791162243664’, ‘9791190090018’, ‘9788965742170’]
books_df = pd.DataFrame(isbn_list, columns=[‘isbn’])

def get_page_count(isbn):
url = f’https://product.kyobobook.co.kr/search?query={isbn}’
response = requests.get(url)
soup = BeautifulSoup(response.text, ‘html.parser’)
book_link = soup.find(‘a’, class_=’gd_name’)[‘href’]

detail_url = f'https://product.kyobobook.co.kr{book_link}'
detail_response = requests.get(detail_url)
detail_soup = BeautifulSoup(detail_response.text, 'html.parser')
page_info = detail_soup.find('div', id='infoset_specific')

for tr in page_info.find_all('tr'):
    if '쪽수' in tr.get_text():
        return tr.find('td').get_text().split('|')[0].strip()

books_df[‘page_count’] = books_df[‘isbn’].apply(get_page_count)
“`

위 코드는 여러 ISBN에 대해 자동으로 쪽수를 추출하여 데이터프레임에 추가하는 방식입니다. apply 메서드를 사용하여 데이터프레임의 각 행에 대해 get_page_count 함수를 적용합니다.

ISBN 쪽수
9791162243664 330
9791190090018 400
9788965742170 250

이렇게 하면 교보문고의 다양한 도서에 대해 손쉽게 쪽수를 추출할 수 있습니다.

다른 내용도 보러가기 #2

마무리

웹 스크래핑을 통해 교보문고에서 ISBN으로 도서의 쪽수를 추출하는 방법에 대해 알아보았습니다. 이 과정에서 requestsBeautifulSoup 라이브러리를 활용하여 웹 페이지의 HTML을 가져오고 필요한 정보를 추출하는 방법을 배웠습니다.

이 기술은 다양한 분야에서 유용하게 활용될 수 있으며, 데이터 분석, 시장 조사, 도서관 관리 등 여러 분야에서 응용할 수 있습니다. 웹 스크래핑에 대한 이해를 바탕으로 더 많은 데이터를 수집하고 활용해보시기 바랍니다.

웹 스크래핑을 진행할 때에는 항상 해당 웹사이트의 이용 약관을 준수하고, 로봇 배제 표준(robots.txt)을 확인하여 불법적인 접근을 피해야 합니다. 이러한 기본 수칙을 준수한다면, 더욱 원활하고 유용한 데이터 수집이 가능할 것입니다.

관련 영상

같이 보면 좋은 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다