본문 바로가기
Python/Python_Crawling

셀레니움(Selenium) 기본예제 : naver 쇼핑 특정상품 위치

by Mr.DonyStark 2023. 12. 14.

□ 목표 : 특정 키워드 상품에 대한 naver 쇼핑 위치(순서)를 조회/출력

   → 자신이 판매하는 상품의 순서(순위)를 파악 가능함

 필요사항

 ○ 상품별 고유값을 분석 후 임의로 특정 상품에 대한 고유값을 검색하여 해당 상품의 위치 출력

 ○ 자동 스크롤기능 → 조회하고자하는 글이 없을시 자동으로 스크롤하여 내려가기 위함임

□ Khow_How

  ○ URL 분석 : 주소상에서 키워드 값 또는 페이지네이션 값을 넣는 패턴 확인
  ○  고유값을 갖는 마땅한 키값이 없다면 개발자 도구에서 모바일 화면 사이즈로 변환 후 다시 개발자 도구를 킨 후 숨겨진 키값을 탐색할 것
  *PC 및 모바일 화면별 키값이 다른 경우가 있음

 

 

*해당 코딩 및 특정상품 선정은 글쓴이 임의로 지정하였음

 

#셀레니움 창 생성을 위한 라이브러리 호출 실행
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

#드라이버 크롬브라우져 실행
driver = webdriver.Chrome()
#실행된  크롬 최대사이즈
driver.maximize_window()
#제품명
pd_name = '꿀사과'
#1단계 : URL로 1페이지 방문
target_page = f'https://msearch.shopping.naver.com/search/all?query={pd_name}'
driver.get(target_page) #---------접속
print('1단계 작업 완료')
time.sleep(3)
#5번 스크롤하여 맨 끝까지 내리기
for i in range(5):
    driver.execute_script('window.scrollBy(0,10000)') #---------스크롤
    time.sleep(2)
#print('2단계 작업완료')
#타겟 상품이 페이지에 노출되고 있는지 확인
try:
    find_pd_cd = '85842816116'   #---------타겟상품의 고유값
    find_pd_selector = f"a[data-i = '{find_pd_cd}']"   #---------타겟상품의 고유값
    find_pd_element = driver.find_element(By.CSS_SELECTOR, find_pd_selector)
    find_pd_info = find_pd_element.get_attribute('data-nclick')
    #받아온 정보를 .split()으로 분리
    find_pd_info_list = find_pd_info.split(',')
    print(find_pd_info_list)
    find_pd_info_list_num = int(find_pd_info_list[2].split(':')[1])
    print(f'{find_pd_info_list_num}\t위치에 있음')

except:
    print('타겟상품 링크 못찾음, 계속 검색진행')
#작업종료
driver.quit()

input()

'Python > Python_Crawling' 카테고리의 다른 글

크롤링 예제 2  (0) 2023.12.19
크롤링 예제 1  (0) 2023.12.19
셀레니움(Selenium) 기본예제 : naver view 특정글 위치  (0) 2023.12.13
셀레니움(Selenium) 기본기능  (0) 2023.12.12
셀레니움(Selenium)  (0) 2023.12.11