웹 자동화란?
- 사람이 일반적으로 웹 브라우저를 사용하여 수행하는 작업을 자동으로
수행할 수 있도록 도와주는 기술- 웹 자동화를 통해 시간을 절약하고 반복적이고 지루한 작업을 자동화하
여 생산성을 향상시킬 수 있다.
ex) 웹 개발, 데이터 수집, 테스트 자동화
웹 애플리케이션을 테스트하거나 자동화하기 위해 사용되는 오픈 소스
프레임워크
실제 사용자가 웹 브라우저를 조작하는 것과 유사한 방식으로 웹 페이
지의 요소 클릭, 텍스트 입력, 페이지 간 이동을 수행하며, 결과를 확인
할 수 있다.
동적으로 HTML이 생성되는 경우에는 requests를 사용할 수 없다.
스크롤 했을 때 데이터가 생성되는 경우
URL 주소는 동일한데 데이터가 변하는 경우
Anaconda prompt에서 selenium을 설치해준다.
pip install selenium
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.get("https://www.naver.com")
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import openpyxl
wb = openpyxl.Workbook()
ws = wb.create_sheet('posco')
ws['A1'] = '상품명'
ws['B1'] = '가격'
ws['C1'] = '링크'
# 검색어 입력
search = input("검색어를 입력하세요: ")
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.get("https://shopping.naver.com/home")
search_input = driver.find_element(By.CSS_SELECTOR, '#__next > div > div.pcHeader_header__tXOY4 > div > div > div._gnb_header_area_150KE > div > div._gnbLogo_gnb_logo_3eIAf > div > div._gnbSearch_gnb_search_3O1L2 > form > div._gnbSearch_inner_2Zksb > div._searchInput_search_input_QXUFf > input')
search_input.click()
search_input.send_keys(search)
search_btn = driver.find_element(By.CSS_SELECTOR, '#__next > div > div.pcHeader_header__tXOY4 > div > div > div._gnb_header_area_150KE > div > div._gnbLogo_gnb_logo_3eIAf > div > div._gnbSearch_gnb_search_3O1L2 > form > div._gnbSearch_inner_2Zksb > div._searchInput_search_input_QXUFf > button._searchInput_button_search_1n1aw')
search_btn.click()
current_height = driver.execute_script("return window.scrollY")
while True:
driver.find_element(By.CSS_SELECTOR, 'body').send_keys(Keys.END)
time.sleep(1)
scrolled_height = driver.execute_script("return window.scrollY")
if (current_height == scrolled_height):
break
current_height = scrolled_height
products = driver.find_elements(By.CSS_SELECTOR, '.product_item__MDtDF')
price = driver.find_elements(By.CSS_SELECTOR, '.product_price_area__eTg7I')
for product in products:
title = product.find_element(By.CSS_SELECTOR, '.product_link__TrAac').get_attribute('title')
price = product.find_element(By.CSS_SELECTOR, '.price_price__LEGN7').text
url = product.find_element(By.CSS_SELECTOR, '.product_link__TrAac').get_attribute('href')
print("제목:", title)
print("가격:", price)
print("URL:", url)
ws.append([title,price,url])
wb.save(r'C:\Users\gram\anaconda3\Untitled Folder\selenium_crawlingtest.xlsx')