작성
·
72
1
안녕하세요 스타트코딩님! 수업 잘 듣고 있는 학생입니다. 질문이 있어 글 남깁니다.
수업 듣기 전에 혼자 해볼 때 저는 soup를 사용하지 않고 find_element를 사용해서 이렇게 코드를 작성했는데 뭐가 다른 걸까요?
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import pandas as pd
driver = webdriver.Chrome()
driver.get('https://search.shopping.naver.com/search/all?query=%EB%8B%AD%EA%B0%80%EC%8A%B4%EC%82%B4')
# 스크롤 전 높이
last_height = driver.execute_script('return document.body.scrollHeight')
while True:
# 스크롤 끝까지 내리기
driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
# 대기 시간 줘야됨 !!!
time.sleep(1)
# 스크롤 후 높이
after_height = driver.execute_script('return document.body.scrollHeight')
# 비교 (if, break)
if last_height == after_height:
break
# 스크롤 전 높이 업데이트
last_height = after_height
products = driver.find_elements(By.CSS_SELECTOR, '.product_item__MDtDF')
data = []
for product in products:
name = product.find_element(By.CSS_SELECTOR, '.product_title__Mmw2K').text
link = product.find_element(By.CSS_SELECTOR, '.product_title__Mmw2K > a').get_attribute('href')
price = product.find_element(By.CSS_SELECTOR, '.price_num__S2p_v').text.split('원')[0].replace(',', '')
data.append([name, link, int(price)])
df = pd.DataFrame(data, columns = ['상품명', '상세페이지링크', '가격'])
df.to_excel('네이버쇼핑.xlsx')
답변 1
1
감사합니다!