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

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

kbw9bw님의 프로필 이미지
kbw9bw

작성한 질문수

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

데이터 추출하기 (복잡한 HTML 구조)

코드한번 확인 요청드립니다.

작성

·

48

0

네이버 닭가슴살 크롤링 과제중인데요

 

html = driver.page_source soup = BeautifulSoup(html, 'html.parser') items = soup.select(".product_item__MDtDF") for item in items: product = soup.select_one(".product_title__Mmw2K > a").text # 상품명 link = soup.select_one(".product_title__Mmw2K > a").attrs['href'] price = soup.select_one(".price_num__S2p_v").text print(product, link, price)

 

 

위 코드로 했는데, 가장 첫번째 상품만 출력이 되고있습니다.

items = soup.select(".product_item__MDtDF")

이 코드 확인시에는, 전체 상품이 출력된것은 확인했는데

for문에서 문제가 생긴것인가요..?

 

#파이썬

 

 

답변 2

0

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

답변이 조금 늦었습니다!

AI 인턴이 말한대로 soup.select_one 대신 item.select_one 을 이용하면 해결되실 거에요 ^^

kbw9bw님의 프로필 이미지
kbw9bw
질문자

감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. kbw9bw님.

네이버 쇼핑 크롤링을 진행하시면서 첫 번째 상품만 출력되는 문제를 겪고 계신 것 같습니다. 이 문제는 soup 객체를 아이템별로 순회하지 않고, 동일한 soup 객체에서 첫 번째 결과만을 가져오기 때문입니다.

아래 코드를 수정해서 순회하는 각 아이템마다 soup.select_one를 사용하시도록 변경해보겠습니다:

html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')

items = soup.select(".product_item__MDtDF")

for item in items:
    product = item.select_one(".product_title__Mmw2K > a").text # 상품명
    link = item.select_one(".product_title__Mmw2K > a").attrs['href']
    price = item.select_one(".price_num__S2p_v").text
    print(product, link, price)

item 객체 안에서 select_one을 사용함으로써, 각각의 상품 정보를 개별적으로 추출할 수 있습니다.

이와 관련하여 도움될 자료가 있는 링크들을 찾아보았으니 참고하세요:

  1. 네이버쇼핑 질문 있습니다!
  2. 첫페이지 크롤링에서 For 문까지는 작동이 되네요. 그러나
  3. 쿠팡 페이지 지정 출력

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

kbw9bw님의 프로필 이미지
kbw9bw

작성한 질문수

질문하기