작성
·
43
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
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
을 사용함으로써, 각각의 상품 정보를 개별적으로 추출할 수 있습니다.
이와 관련하여 도움될 자료가 있는 링크들을 찾아보았으니 참고하세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다!