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

안효기님의 프로필 이미지
안효기

작성한 질문수

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

텍스트를 포함하는 태그 찾기 (feat.정규표현식)

links 클래스 a.search-product-link가 36개가 아닙니다..

작성

·

230

0

안녕하세요 선생님 선생님의 강의를 따라하고 있었는데, 강의 초반부분에 상품 링크를 받아오는 부분에서 links = soup.select("a.search-product-link")라는 부분이 있습니다. 선생님 강의에서는 첫 페이지 36개를 잘 선택하는 것을 볼 수 있는데요, 쿠팡 사이트에서 변화가 있었는듯 합니다.

쿠팡에서 1~36등까지의 순위 아이템 외에 베스트 셀러 상품들을 한 페이지 내에 추가했는데, 이 상품들도 클래스가 a.search-product-link로 똑같아서 얘네를 따로 어떻게 걸러내야할지 모르겠습니다.

위 사진이 1~36등 상품이고, 아래 사진이 베스트셀러라는 항목에 포함된 상품입니다.. 보시다시피 클래스가 똑같아서 어떻게 구별할 수 있을지 모르겠습니다.쿠팡 순위.PNG쿠팡 베스트셀러.PNG

답변 1

0

안효기님의 프로필 이미지
안효기
질문자

선생님 제가 스스로 베스트셀러를 제외한 36개 상품만 포함하는 코드를 한 번 만들어 보았습니다.

이렇게 하는 방법이 맞는지 검토해주실 수 있으신가요!!?

결과는 i값이 36으로 나왔습니다!

response = requests.get(main_url, headers=header)
html = response.text
soup = BeautifulSoup(html, 'html.parser')

all_links = soup.select("a.search-product-link") # 순위 상품 + 광고 상품 + 베스트 셀러가 포함된 상품 64개
links = [] # 베스트 셀러를 제외하기 위한 새로운 리스트
i = 1 # 이건 36개가 뜨는지 보려고 넣었습니다.
for all_link in all_links : # all_links 리스트를 하나씩 뜯어보기
    if len(all_link.select(".search-product-wrap")) > 0 : # 베스트셀러에는 없는 클래스인 .search-product-wrap 클래스가 있으면 
        links.append(all_link) # 새로운 리스트인 links에 포함
        print(i)
        i = i + 1
안효기님의 프로필 이미지
안효기

작성한 질문수

질문하기