반응형
4번째로 하는 크롤링 및 파싱 강좌입니다. 이번 강좌에서는 yes24에서 제공해주고 있는 베스트 셀러에 해당하는 데이터를 가져와 보려고 합니다.
사전 정보 수집
yes24에서 제공하는 베스트 셀러의 경우 이전 강좌였던 네이버 및 다음 실시간 검색어 파싱과 동일하게 메인 홈페이지 소스에서 검색을 하고 해당하는 부분을 가지고 오는 방식으로도 할 수 있다.
하지만 이번 강좌에서는 바로 전 강좌인 네이트 실시간 검색어 파싱과 동일하게 xhr 요청을 캡처해서 진행해보도록 하겠다.
먼저 크롬을 통해 yes24 메인 홈페이지로 이동한 다음 F12를 이용해서 개발자 도구를 켜고 Network 탭으로 이동한 다음 xhr로 필터링을 시작한다.
그리고 아래 사진처럼 베스트 셀러 부분에서 '국내도서'를 다시 직접 선택해서 서버로 요청을 보낸다.
그러면 아래와 같이 2개의 요청이 간 것을 볼 수 있다.
의심스러운 1번째 요청을 선택해서 응답을 보게 되면 우리가 원하는 베스트 셀러에 대한 정보를 보내주는 것을 확인할 수 있으며 span
태그에서 class
속성으로 rnk_info
을 가지는 원소를 가지고 오면 된다는 것을 알 수 있다.
그리고 해당 원소에서 strong
태그는 책 제목이고, em
태그는 책 저자에 대한 정보라는 것도 알 수 있다.
구현하기
from bs4 import BeautifulSoup import requests def get_content(): url = 'http://www.yes24.com/_par_/welcome/TodayBook/BestSeller/W_R6_TodayBook_BestSeller_DomesticBook.htm' req = requests.get(url) content = req.content soup = BeautifulSoup(content, 'html.parser') elements = soup.find_all('span', class_='rnk_info') return list(map(lambda x: (x.strong.text, x.em.text), elements)) result = get_content() for index, item in enumerate(result): print('[{:2}위] {} / {}'.format(index + 1, item[0], item[1]))
시연 결과
아래 이미지와 같이 yes24의 국내 베스트 셀러를 잘 가지고 오는 것을 확인할 수 있다.
더 생각해보기
아래 내용은 직접 생각해서 구현을 해보시기 바라며 해당 내용에 대한 답안은 따로 제공하지 않습니다.
- xhr 방식을 사용하지 않고 메인 페이지에서 파싱을 해오려면 코드를 어떻게 수정해야 할지 생각해봅시다.
- 국내 도서가 아닌 다른 분야에서의 베스트 셀러 정보를 가지고 오려면 코드를 어떻게 수정해야 할지 생각해봅시다.
반응형
'프로젝트 목록 > ParseWEB' 카테고리의 다른 글
ParseWEB [1-6] 교보문고 베스트 셀러 파싱 (0) | 2019.01.22 |
---|---|
ParseWEB [1-5] 알라딘 베스트 셀러 파싱 (0) | 2019.01.21 |
ParseWEB [1-3] 네이트 실시간 검색어 파싱 (2) | 2018.12.17 |
ParseWEB [1-2] 다음 실시간 검색어 파싱 (0) | 2018.12.15 |
ParseWEB [1-1] 네이버 실시간 검색어 파싱 (4) | 2018.12.14 |