[혼자 공부하는 데이터 분석 with 파이썬] 웹 스크래핑 관련 질문입니다.

28 views
Skip to first unread message

이제빈

unread,
Apr 21, 2024, 6:28:41 AM4/21/24
to 머신러닝/딥러닝 도서 Q&A
안녕하세요. [혼자 공부하는 데이터 분석 with 파이썬] 도서를 이용해 데이터 분석 공부를 해보고 있는 이제빈이라고 합니다.
책에 있는 실습 중 yes24 웹을 스크래핑 해서 도서의 쪽수를 가져오는 실습을 해본 후 이를 적용해 보고 싶어져 교보문고 웹에서 이를 시도해보는 중 입니다.  그런데 교보문고 웹에서는 yes24 웹과는 다르게 도서 상세 페이지를 제대로 읽어오지 못하는 것 같아서 질문을 드리게 됐습니다.  오류를 찾아 줄마다 print 문을 이용해 출력을 해본 결과 도서 검색 페이지 url을 requests한 r은 print 했을 때 정상적으로 출력이 되나 도서 상세 페이지 url은 requests 했을 때는 호출은 정상적으로 됐다고 나오지만 print 문을 이용했을 때 빈칸으로 출력 됩니다. 왜 이런 현상이 발생했는지, 그리고 이 문제가 웹 크롤링과 연관이 있는지 궁금해서 질문 드립니다. 
import requests
from bs4 import BeautifulSoup

def gubo_get_page_cnt(isbn):
  # 교보문고 검색 페이지 url
  r = requests.get(url.format(isbn))
  soup = BeautifulSoup(r.text, 'html.parser')
  prd_info = soup.find('a', attrs={'class':'prod_info'})
  # 도서 상세 페이지를 가져옴
  url = prd_info['href']
  r = requests.get(url)
  print(r.text)
  soup = BeautifulSoup(r.text, 'html.parser')
  prd_detail = soup.find('div', attrs={'class':'tbl_row_wrap'})
  prd_tr_list = prd_detail.find_all('tr')
  for tr in prd_tr_list:
    if tr.find('th').get_text() == '쪽수':
      return tr.find('td').get_text().split()
  return ''

gubo_get_page_cnt('9791190090018')


--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-10-b7e209ffeae2> in <cell line: 22>() 20 return '' 21 ---> 22 gubo_get_page_cnt('9791190090018') <ipython-input-10-b7e209ffeae2> in gubo_get_page_cnt(isbn) 14 soup = BeautifulSoup(r.text, 'html.parser') 15 prd_detail = soup.find('div', attrs={'class':'tbl_row_wrap'}) ---> 16 prd_tr_list = prd_detail.find_all('tr') 17 for tr in prd_tr_list: 18 if tr.find('th').get_text() == '쪽수': AttributeError: 'NoneType' object has no attribute 'find_all'

Haesun Park

unread,
Apr 22, 2024, 3:56:42 AM4/22/24
to 이제빈, 머신러닝/딥러닝 도서 Q&A
안녕하세요. 박해선입니다.
아마도 교보문고 상세페이지는 익명의 스크래핑을 거부하는 것 같습니다.
웹 브라우징을 시뮬레이션하는 셀레니움 같은 도구를 사용하거나 
requests 라이브러리로 호출할 때 웹브라우저가 전송하는 헤더를 추가해 볼 수 있습니다.
이런 내용은 이 책의 범위를 넘어섭니다.
웹스크래핑 도서를 참고하시길 바라겠습니다.
감사합니다!

2024년 4월 21일 (일) 오후 7:28, 이제빈 <iii12...@gmail.com>님이 작성:
--
이 메일은 Google 그룹스 '머신러닝/딥러닝 도서 Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ml-dl-book-qn...@googlegroups.com에 이메일을 보내세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/ml-dl-book-qna/2cabaeea-aff0-4a02-8abb-7ac9fc9f796fn%40googlegroups.com을(를) 방문하세요.
Reply all
Reply to author
Forward
0 new messages