어제시도한 코드는 버리고 유튜브를 참고하기로..
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 |