인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

m_r_n님의 프로필 이미지

작성한 질문수

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

네이버쇼핑(닭가슴살) 심화 - 구매건수 추출

작성

·

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

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

AI인턴이 잘 캐치해줬네요!
soup를 product로 바꾸어 주시면 될겁니다 ㅎㅎ

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 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에서 추출함으로써 각 상품에 맞는 정보를 가져올 수 있도록 합니다.

추가로 도움이 될 수 있는 자료를 안내해 드립니다:
- 네이버쇼핑 질문 있습니다!: 비슷한 문제를 경험한 수강생의 질문입니다.
- 코드한번 확인 요청드립니다.: 네이버 쇼핑에서 데이터 추출 시 발생할 수 있는 문제와 해결법을 다룹니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

m_r_n님의 프로필 이미지

작성한 질문수

질문하기