selenum 설치
BeautifulSoup 만으로 해결할 수 없는것
Selenium
웹브라우저 원격조작 도구
자동으로 URL 열고 클릭등이 가능
스크롤, 문자의 입력, 화면 캡쳐 등
설치
주피터노트북으로 설치 확인
크롬 버젼 확인하고 드라이버 다운받기(버젼 앞부분 숫자에 맞는것 중 선택)
실행 시 새로운 크롬브라우저 뜨면 성공
*driver.quit()으로 크롬브라우저 닫기 가능
selenium 안내사항
selenium 기초
화면크기 조정 (한화면에 많은 정보가 담기는게 데이터 가져오는데 유리)
driver.maximize_window()
driver.minimize_window()
driver.set_window_size(600,600)
새로고침,뒤,앞으로 가기
driver.refresh()
driver.back()
driver.forward()
클릭
from selenium.webdriver.common.by import By
first_content = driver.find_element(By.CSS_SELECTOR,'#content > div.cover-masonry > div > ul > li:nth-child(1)')
first_content.click()
새로운 탭 생성 및 이동
driver.execute_script('window.open("https://www.naver.com")')
driver.switch_to.window(driver.window_handles[0])
탭 닫기 (탭이동으로 정해진 탭을 닫는다)
driver.close()
*quit은 전체종료, close는 탭 종료
스크롤 하기
driver.execute_script('return document.body.scrollHeight')
스크롤 최하단, 최상단 이동
driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
driver.execute_script("window.scrollTo(0,0);")
현재보이는 화면 스크린샷 저장
driver.save_screenshot('./last_height.png')
특정 태그지점까지 스크롤 이동
from selenium.webdriver import ActionChains
some_tag = driver.find_element
(By.CSS_SELECTOR,'#content > div.cover-list > div > ul > li:nth-child(1)')
action = ActionChains(driver)
action.move_to_element(some_tag).perform()
*actionchains 잘 활용하기
검색어 입력하기
네이버 열기
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome('../driver/chromedriver/chromedriver.exe')
driver.get('https://www.naver.com')
검색어 입력창 찾기
keyword = driver.find_element(By.CSS_SELECTOR,'#query')
keyword.clear() # 기존 검색어 지우는 명령어
keyword.send_keys('파이썬')
이렇게 입력하고나면 검색창에 파이썬 이라는 글자가 들어가있음
검색버튼 누르기
search_btn = driver.find_element(By.CSS_SELECTOR,'#search_btn')
search_btn.click()
CSS_SELECTOR 대신 XPATH 활용하기 (셀레니움에서만 가능)
driver.find_element(By.XPATH,'//*[@id="query"]').send_keys('xpath')
driver.find_element(By.XPATH, '//*[@id="search_btn"]').click()
// : 최상위 루트를 의미
Pinkwink 검색어 입력하기
돋보기 버튼 클릭을 위한 코드
from selenium.webdriver import ActionChains
search_tag = driver.find_element(By.CSS_SELECTOR, '.search')
action = ActionChains(driver)
action.click(search_tag)
action.perform()
driver.find_element(By.CSS_SELECTOR,'#header > div.search > input[type=text]').send_keys('딥러닝')
driver.find_element(By.CSS_SELECTOR,'#header > div.search.on > button').click()
selenium + beautifulsoup