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

suki님의 프로필 이미지
suki

작성한 질문수

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

크롤링 로켓배송 제외

해결된 질문

작성

·

748

·

수정됨

0

안녕하세요. 문의드립니다.

쿠팡 로켓배송 크롤링강의를 보고 쿠팡 1~10(위에 빨간리본상품) 중 로켓배송상품, 광고상품을 빼고 상품의 이름을 가져오고 싶은데요. 강의 보고 어떻게 적용을 해야할지 해매고 있어 문의드립니다.

초보라 모르는게 많네요. 도와주세요~

 

1.jpg

 

답변 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 클래스를 찾는 과정을 빼도 원하시는 결과를 얻으실수 있습니다.

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

답변 너무 감사합니다.

하지만 1~10 상품중에 로켓배송은 계속 포함되어있는데요.

로켓배송은 어떻게 빼야 할까요?

이런식으로 하면 될까요?

 

print(name.text)

 

김플님의 프로필 이미지
김플
지식공유자

이미 맨 처음에 작성하신 코드에 있는

if badge:
    continue

이 부분이 뱃지가 있으면 아래 코드를 실행안하고 반복문으로 돌아가는 코드입니다.
그렇다는건 로켓배송 상품을 출력하지 않고 넘어간다는 거죠.

suki님이 작성하신 코드와 제가 알려드린 부분을 조합하면 원하시는게 모두 해결됩니다.
제가 모든 부분을 다 짜드리는 것보다 힌트를 조합해서 직접 하시는게 공부하시는데 훨씬 도움이 될겁니다.

그리고 일단 마지막 질문에 올리신 코드를 실행시켜 보시면 답이 나옵니다.
화이팅!!

suki님의 프로필 이미지
suki

작성한 질문수

질문하기