inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Khóa học cơ bản về Selenium

Mã hóa logic chương trình theo dõi xếp hạng sản phẩm của cửa hàng thông minh

7강 질문이 있습니다.

506

em2day2047

2 câu hỏi đã được viết

1

상품고유번호(data-i)가 아닌 업체고유번호(data-ms)로 했을 때는 왜 작동이 안되는 걸까요?

2페이지에 분명히 있는데, 못찾고 계속 지나갑니다.

알려주시면 감사하겠습니다.

 

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import chromedriver_autoinstaller

chromedriver_autoinstaller.install()

드라이버 = webdriver.Chrome()


진짜등수 = -1
등수 = -1

for 페이지인덱스 in range(1, 15):

    # 1. 페이지 방문
    검색쿼리 = "em"
    쇼핑링크 = f"https://msearch.shopping.naver.com/search/all?frm=NVSHPAG&origQuery={검색쿼리}&pagingIndex={페이지인덱스}&pagingSize=40&productSet=total&query={검색쿼리}&sort=rel&viewType=lst"
    드라이버.get(쇼핑링크)
    time.sleep(2)


    # 2. 페이지 4-5번 내리기
    for _ in range(4):
        드라이버.execute_script("window.scrollBy(0,10000);")
        time.sleep(0.5)

    # 3. 타겟 상품이 노출되고 있는지 확인
    # 4. 없다면 다음페이지로 이동
    try:
        타겟상품코드 = "4627652"
        타겟상품_셀렉터 = f'a[data-ms="{타겟상품코드}"]'
        찾은상품_엘리먼트 = 드라이버.find_element(By.CSS_SELECTOR, 타겟상품_셀렉터)
        데이터 = 찾은상품_엘리먼트.get_attribute('data-nclick')
        진짜등수 = 데이터.split(f"{타겟상품코드},r:")[-1].split(',')[0]
        등수 = int(진짜등수) - (int(페이지인덱스) - 1) * 40
        break
    except:
        print(f"{페이지인덱스} 페이지에서 타겟상품을 못찾음")
        #next page 방문해야 함

print(f"내상품의 진짜 등수는 : {진짜등수} 입니다.")
print(f"내 상품은 {페이지인덱스} 페이지의 {등수}위에 노출되고 있습니다.")



input()

python selenium

Câu trả lời 1

1

lread90

확인해보니 data-nclick의 내용보시면 그 안에 80118943823 상품 고유번호가 들어갑니다

image

이러면 코드가 변경이 되어야하는데 위쪽 보시면 ,r: 뒤에 등수 값이 있어야하는데 없는 것으로 보아 ,r: 값을 사용하실 수는 없고

# 기존 코드
진짜등수 = 데이터.split(f"{타겟상품코드},r:")[-1].split(',')[0]

# 변경 코드 but, 등수정보가 포함이 안 되어있는경우
진짜등수 = 데이터.split(f",r:")[-1].split(',')[0]

find_elements를 통해서 몇번째 인덱스에 있는지 찾는 코드 형태로 변경이 되어야합니다

 

0

em2day2047

선생님

제가 이해가 잘 안되는데요.

먼저

개발자도구 elements 내용은 다름과 같습니다.


image

그런데,

타겟상품코드 = "4627652"

타겟상품_셀렉터 = f'a[data-ms="{타겟상품코드}"]'

위의 코드에서는 작동이 안되고

 

타겟상품코드 = "83449501731"

타겟상품_셀렉터 = f'a[data-i="{타겟상품코드}"]'

이 코드에서는 작동이 되는 이유를 모르겠습니다.

 

참고로, data-ms 값은 업체고유값으로 보이니다.

 

답변 주시면 정말 감사하겠습니다.

 

 

디스코드 소통창구는 없어졌나요 ??

0

4

1

FOREIGN KEY 정리하기, 영상대로 SQL코드 복붙해도 안되요.

0

3

1

모델 서빙과 관련된 강좌 출시 예정된 바가 있으신지 여쭤봅니다!

0

6

1

모델 서빙과 관련된 강좌가 출시되는지 질문드립니다.

0

4

1

20번강좌에 대한 질문입니다.

0

5

1

6-6

0

17

1

작업형 1 유형 부분

0

14

1

수강평 이벤트

0

21

2

작업형 1 (삭제예정, 구 버전)

0

34

2

강의노트는 어디있나요?

0

21

1

노션 학습 자료 권한 요청

0

17

1

수강기간 연장 문의드립니다.

0

25

1

2유형 레이블 인코딩 VS 원핫 인코딩

0

25

3

part2강의 문의사항입니다.

0

23

2

현재 네이버 코드가 바뀐거 같습니다.

0

387

2

소스코드 링크

0

273

1

scroll 속성이 없다고 나오는 것 같아요..

0

422

2

스마트스토어 상품순위 문의 있습니다.

1

302

2

구름 ide에서 folder 아래 Scripts 폴더가 안 만들어져요

0

429

2

가상환경 설정 후 크롬 드라이버 다운받고 python .\app.py 코드를 쳤는데 에러가 나옵니다.

1

584

1

크롬 브라우저를 설치했는데 오류가 납니다

1

2678

1

BY.xpath로 자녀값도 가져올 수 있나요??

1

412

1

맥에서 개발환경 설정하는 법

1

454

1

click() 이 작동하지 않네요.

1

444

1