from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
from bs4 import BeautifulSoup
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
url = 'http://www.naver.com'
driver.get(url)
driver.page_source # 현재 페이지의 HTML 정보
# 웹 브라우저 조작하기
driver.find_element(By.LINK_TEXT, value='뉴스').click() # 뉴스 요소(엘레멘트) 클릭
# driver.back() # 뒤로가기
# 검색하기
driver.find_element(By.CLASS_NAME, value='search_input').send_keys('퀀트 투자 포트폴리오 만들기')
driver.find_element(By.CLASS_NAME, value='btn_search').send_keys(Keys.ENTER)
# 새로운 검색어로 검색하기
driver.find_element(By.CLASS_NAME, value='box_window').clear()
driver.find_element(By.CLASS_NAME, value='box_window').send_keys('영화')
driver.find_element(By.CLASS_NAME, value='bt_search').send_keys(Keys.ENTER)
# XPATH를 활용하여 조작하기
# XPAHT란? HTML이나 XML 중 특정 값의 태그나 속성을 찾기 쉽게 만든 주소
# 블로그 XPATH: //*[@id="lnb"]/div[1]/div/div[1]/div/div[1]/div[2]/a
driver.find_element(By.XPATH, value='//*[@id="lnb"]/div[1]/div/div[1]/div/div[1]/div[2]/a').click()
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);') # 페이지 스크롤
# driver.find_element(By.TAG_NAME, value='body').send_keys(Keys.PAGE_DOWN)
# 페이지의 가장 하단까지 스크롤
prev_height = driver.execute_script('return document.body.scrollHeihgt') # 현재의 창 높이를 저장
while True:
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
time.sleep(2)
curr_height = driver.execute_script('return document.body.scrollHeight')
if curr_height == prev_height:
break
prev_height = curr_height
# 모든 블로그 제목 크롤링
html = BeautifulSoup(driver.page_source)
txt = html.find_all(class_='title_link')
txt_list = [i.text for i in txt]
# 페이지 종료
driver.quit()
댓글