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

509

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 값은 업체고유값으로 보이니다.

 

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

 

 

기출 11회 작업형 2_전체 데이터 학습 여부

0

11

1

RateLimitError

0

7

2

예측값 결과 소수점 차이

0

16

2

여태까지 발견한 이슈들 공유드립니다.

1

16

1

기출 문제와 실전챌린지 연습문제 무엇부터 푸는게 나은가요?

0

13

0

전처리 train() test([ ])

0

14

2

작업형 1 배경지식 질문

0

17

2

옳게 풀은건지 질문드립니다!

0

13

1

roc_auc_score

0

22

2

재귀함수 연산법

0

11

2

추가질문 합니다

0

13

2

시험환경 구름

0

16

2

2유형 질문드려요

0

13

2

RandomForest vs lgb

0

22

2

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

0

406

2

소스코드 링크

0

282

1

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

0

432

2

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

1

317

2

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

0

438

2

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

1

594

1

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

1

2684

1

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

1

419

1

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

1

457

1

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

1

455

1