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강 질문이 있습니다.

522

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

14

1

26년2회 실기기출은 언제쯤...

0

13

2

재귀함수 종료조건

0

8

1

git bash .env

1

12

1

예제 001 실행 안됩니다.

0

13

3

ipython 설치가 안되는거 같습니다.

0

9

1

이론 공부법 요약본 버전 업데이트 문의

0

15

2

피드백 내용 문의드립니다.

0

20

0

백준 서비스 종료로 인한 강의 자료 업데이트 요청드립니다.

0

22

1

백준 사이트 준비중이라 문제를 볼 수 가 없어요

0

21

1

작업형 1번문제... 환경관련

0

23

2

09차 네이버 영화 리뷰 수집 실습 관련 질문

0

26

1

12회 기출은 언제 업데이트 될까요??

0

32

2

알파벤티지 sleep(5) 관련 문의

1

39

2

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

0

425

2

소스코드 링크

0

294

1

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

0

469

2

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

1

339

2

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

0

456

2

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

1

610

1

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

1

2700

1

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

1

433

1

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

1

465

1

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

1

469

1