해결된 질문
작성
·
748
·
수정됨
0
안녕하세요. 문의드립니다.
쿠팡 로켓배송 크롤링강의를 보고 쿠팡 1~10(위에 빨간리본상품) 중 로켓배송상품, 광고상품을 빼고 상품의 이름을 가져오고 싶은데요. 강의 보고 어떻게 적용을 해야할지 해매고 있어 문의드립니다.
초보라 모르는게 많네요. 도와주세요~
답변 1
0
여러가지 방법이 있습니다.
일단 1위부터 10위까지 가져올때 지금 현재 코드에 작성하신
c_number1 = item.select_one(".number no-1")
c_number2 = item.select_one(".number no-2")
c_number3 = item.select_one(".number no-3")
이렇게는 10까지 해야하니 비효율적이죠.
하지만 소스코드를 확인해보시면 number라는 클래스만 가져와도 딱 10개입니다. 그러니까 no-1~no-10을 붙여주지 않더라도 딱 1위부터 10위까지만 가져오게 되는겁니다.
number = item.select_one(".number")
if not number:
continue
다른 방법은 반복문을 시작할때
for item in items: 이부분을
for item in items[:10]: 이렇게만 바꿔주면
item에서 딱 1위부터 10위까지만 반복에 사용되기때문에 number 클래스를 찾는 과정을 빼도 원하시는 결과를 얻으실수 있습니다.
이미 맨 처음에 작성하신 코드에 있는
if badge:
continue
이 부분이 뱃지가 있으면 아래 코드를 실행안하고 반복문으로 돌아가는 코드입니다.
그렇다는건 로켓배송 상품을 출력하지 않고 넘어간다는 거죠.
suki님이 작성하신 코드와 제가 알려드린 부분을 조합하면 원하시는게 모두 해결됩니다.
제가 모든 부분을 다 짜드리는 것보다 힌트를 조합해서 직접 하시는게 공부하시는데 훨씬 도움이 될겁니다.
그리고 일단 마지막 질문에 올리신 코드를 실행시켜 보시면 답이 나옵니다.
화이팅!!
답변 너무 감사합니다.
하지만 1~10 상품중에 로켓배송은 계속 포함되어있는데요.
로켓배송은 어떻게 빼야 할까요?
이런식으로 하면 될까요?
print(name.text)