작성
·
57
0
안녕하세요~ 네이버쇼핑(닭가슴살) 과제 심화로 구매건수를 추출하고 있는데,
강의에서는 구매건수만 별도로 추출하는 것으로 나와서
한번 상품명,링크,가격,구매건수를 같이 추출해보려고 하고 있거든요.
이렇게 짜니, 자꾸 모든 상품의 구매건수가 똑같은 숫자로 나오는데,
원인이 무엇일까요?
products = soup.select(".product_item__KQayS")
# 상품명, 상세페이지링크, 가격, 구매건수수 추출하기
for product in products:
# 상품명
name = product.select_one(".product_title__ljFM_").text
# 상세페이지 링크
link = product.select_one(".product_title__ljFM_>a").attrs['href']
# 가격
price = product.select_one(".price_num__Y66T7").text.split('원')[0].replace(',','')
# 구매건수
if soup.select_one("[data-shp-area*=purchase] em"):
bought = soup.select_one("[data-shp-area*=purchase] em").text.replace(',','')
if '만' in bought:
bought = int(float(bought.split('만')[0])*10000)
else :
bought = ''
print(name, link, price, bought)
data.append([name, link, price, bought])
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. m_r_n님.
네이버 쇼핑 크롤링 과제에서 각 상품의 구매 건수를 추출하는 작업을 진행 중이시군요. 현재 코드에서는 모든 상품의 구매 건수를 동일하게 출력하는 문제가 발생하고 있는 것 같습니다. 이 문제는 구매 건수를 추출하는 코드를 각 product
객체 내에서 실행하지 않고, 전체 페이지 soup
에서 동일한 위치의 요소를 선택하고 있기 때문입니다.
아래와 같이 코드를 수정해 보세요:
products = soup.select(".product_item__KQayS")
# 상품명, 상세페이지링크, 가격, 구매건수수 추출하기
for product in products:
# 상품명
name = product.select_one(".product_title__ljFM_").text
# 상세페이지 링크
link = product.select_one(".product_title__ljFM_>a").attrs['href']
# 가격
price = product.select_one(".price_num__Y66T7").text.split('원')[0].replace(',', '')
# 구매건수
purchase_info = product.select_one("[data-shp-area*=purchase] em")
if purchase_info:
bought = purchase_info.text.replace(',', '')
if '만' in bought:
bought = int(float(bought.split('만')[0]) * 10000)
else:
bought = ''
print(name, link, price, bought)
data.append([name, link, price, bought])
수정된 코드에서는 할인 가격
, 구매 건수
등의 정보를 개별 product
에서 추출함으로써 각 상품에 맞는 정보를 가져올 수 있도록 합니다.
추가로 도움이 될 수 있는 자료를 안내해 드립니다:
- 네이버쇼핑 질문 있습니다!: 비슷한 문제를 경험한 수강생의 질문입니다.
- 코드한번 확인 요청드립니다.: 네이버 쇼핑에서 데이터 추출 시 발생할 수 있는 문제와 해결법을 다룹니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.