본문 바로가기

Selenium

Python Selenium with 네이버쇼핑(2)

어제시도한 코드는 버리고 유튜브를 참고하기로..

 

from selenium import webdriver

#브라우저 꺼짐 방지 옵션
from selenium.webdriver.chrome.options import Options

from selenium.webdriver.common.keys import Keys
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
import csv


# 브라우저 꺼짐 방지 옵션
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=chrome_options)

# URL 열기
driver.maximize_window()

# 검색창에 면도기 검색
search = driver.find_element(By.XPATH, '//*[@id="__next"]/div/div[1]/div/div/div[2]/div/div[2]/div/div[2]/form/div[1]/div/input')
search.send_keys("브라운 면도기")
search.send_keys(Keys.RETURN)

# 스크롤 전 높이
before_h = driver.execute_script("return window.scrollY")


# 무한 스크롤
while True:
    # 맨 아래로 스크롤을 내린다.
    driver.find_element(By.CSS_SELECTOR, 'body').send_keys(Keys.END)

    # 스크롤 사이 페이지 로딩 시간
    time.sleep(1)

    # 스크롤 후 높이
    after_h = driver.execute_script("return window.scrollY")

    if after_h == before_h:
        break
    before_h = after_h

# 파일 생성
f = open(r"C:\Users\User\Desktop\sele\selenium\data.csv", 'w', encoding='CP949', newline='')
csvWriter = csv.writer(f)

# 상품 정보 div
items = driver.find_elements(By.CSS_SELECTOR, '.basicList_info_area__TWvzp')

for item in items:
    name = item.find_element(By.CSS_SELECTOR, '.basicList_title__VfX3c').text
    try:
        price = item.find_element(By.CSS_SELECTOR,'.basicList_price_area__K7DDT').text
    except:
        price = "판매중단"
    link = item.find_element(By.CSS_SELECTOR, '.basicList_title__VfX3c > a').get_attribute('href')
   
    # 데이터 쓰기
    csvWriter.writerow([name, price, link])

# 파일 닫기
f.close()

 

CSV 파일로 저장 후 Excel 파일로 열기까지 성공했다.

변한게 있다면 XPATH 붙여넣기가 아닌 CSS_SELECTOR를 고민해 넣을 수 있다는 점이 달라졌다.

이번 주는 이게 마지막 일듯.

 

조잡하지만 처음 크롤링한 기념으로

꽤나 단순하고 꽤나 간편하다.

'Selenium' 카테고리의 다른 글

Python Selenium 무한스크롤  (3) 2023.05.19
Python Selenium with 원티드(1)  (1) 2023.05.19
Python Selenium with 네이버쇼핑  (0) 2023.05.11
Python Selenium 맛보기 with Valorant  (0) 2023.05.10