• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

예외처리관련 문의

22.01.10 08:53 작성 조회수 123

0

안녕하세요 !  질문이 있어서 여쭤봅니다.

1. (해당부분 있는 링크)http://item.gmarket.co.kr/Item?goodscode=2084749991&ver=637773347390774517

2. (해당부분 없는 링크)http://item.gmarket.co.kr/Item?goodscode=1679212119&ver=637773347390774517

질문사항: 상품 목록에 들어가서보니 어떤 품목은 빨간색으로 표시되어있는 부분이 있는 반면 일부 품목에서는 저 부분(태그가)                     없는 것들도 있었습니다.  이럴 경우에는 어떻게 처리해야하나요?

(결론적으로 string, get_text()로 변환해서 엑셀에 저장하고 싶은데 중간중간 None값이 있어서(태그가 없는 것들) string이나get_text()가 불가한 상태입니다.)

방법이 여러가지가 있을 것 같은데.. 대표적인 방법은 한가지만 말씀해주시고.. 그 외에 방법도 언급정도만 해주시면 제가

찾아서 공부해보겠습니다.

 

감사합니다.

--------------------------제가 작성한 코드 ------------------------------------------------------

import requests

import openpyxl

from bs4 import BeautifulSoup

 

excel_file = openpyxl.Workbook()

excel_sheet = excel_file.active

excel_sheet.append(['랭킹','상품이름','상품가격','브랜드','링크'])

 

res = requests.get('http://corners.gmarket.co.kr/Bestsellers?viewType=G&groupCode=G06')

soup = BeautifulSoup(res.content, 'html.parser')

link = soup.select('div.best-list')

link = link[1]

item_info = link.select('ul > li')

 

for index, i in enumerate(item_info):

    item_name = i.select_one('a.itemname')

    item_price = i.select_one('div.s-price strong')

    item_href = item_name['href']

    item_seperate = requests.get(item_href)

    item_seperate_soup = BeautifulSoup(item_seperate.content, 'html.parser')

    item_seperate_data = item_seperate_soup.find('p', class_='shoptit').find('span', class_='text')    

    

    print(index+1, item_name.string, item_price.string, item_seperate_data, item_href)

 

결론: item_seperate_data를 string이나 get_text()로 추출하고 싶으나 None값이 섞여 있어서 불가능한 상태

답변 1

답변을 작성해보세요.

0

안녕하세요. 우선 각자의 코드를 봐드리는 부분은 양해를 부탁드려요. 평생 강의이고, 본 질문/답변은 당연히 본 강의 영상에 이슈가 있어서 진행이 안될 때를 도와드리기 위함이기도 하니까요.

가볍게만 말씀드리면, 특정 태그의 내용이 없어서 None 일 경우는 가볍게 해당 객체가 None 인지를 조건문등으로 체크하셔서, 예외처리를 하시는 방법을 쓰시거나, try, except 와 같은 파이썬 예외 처리 문법을 써서, 에러가 날 경우는 except 에서 처리를 한다든지 하는 방법을 쓰시면 어떠실까 합니다.

if object == None:

   ...