!!!주의!!!
selenium의 코드가 바뀜 (인강의 내용과 달라짐 숙지) - 공식문서 확인하기
기존:find_element_by_css_selector('tag') 에서
현재:find_element(By.CSS_SELECTOR('tag')) 로 바뀌었음
참고 : - https://www.selenium.dev/documentation/webdriver/getting_started/install_library/
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# Chrome webDriver의 실행파일 경로
chrome_driver_path = webdriver.Chrome('../driver/chromedriver.exe')
# Chrome WebDriver 인스턴스 생성 및 실행 파일 경로 지정
service = Service(executable_path = chrome_driver_path driver)
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service = service, options = options)
driver.get("https://www.naver.com")
driver.quit()
```
----------------------------
------------------------------------
```
### 브라우저 조작
-------------------------------------------
#### 화면 최대 크기 설정
driver.maximize_window()
-----------------------------------------
#### 화면 최소 크기 설정
driver.minimize_window()
------------------------------------
#### 화면 크기 설정
driver.set_window_size(600,600)
-----------------------------------
#### 새로고침
driver.refresh()
-------------------------------------------------------------------------------------
#### 뒤로가기
driver.back()
------------------------------------------------------------------------------------
#### 앞으로 가기
driver.forward()
-----------------------------------------------------------------------------------
#### 새로운 탭 생성 - 자바스크립트 코드 사용
driver.execute_script('window.open("https://www.naver.com");')
-----------------------------------------
#### 탭 이동
len(driver.window_handles)
driver.switch_to.window(driver.window_handles[0])
-------------------------------------------------
#### 탭 닫기
driver.close()
----------------------------------------------
#### 화면 스크롤
# 위에서 종료했으니 다시 브라우저 띄우기
# execute_script는 자바스크립트 사용하겠다는 의미
driver.execute_script('return document.body.scrollHeight')
-------------------------------------------------------------------------------------
#### 화면 스크롤 하단 이동
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
-------------------------------------------------------------------------------------
#### 현재 보이는 화면 스크린샷 저장
driver.save_screenshot('./last_height.png')
-------------------------------------------------------------------------------------
#### 화면 스크롤 상단 이동
driver.execute_script('window.scrollTo(0,0);')
-------------------------------------------------------------------------------------
#### 스크린샷
driver.save_screenshot("./screenshot.png")
--------------------------------------------
### 웹 html 요소 검색
- find_element() or find_elements() 사용
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()
--------------------------------------------
원하는 페이지의 ul 밑에 li를 커서 움직이며 원하는 해당 페이지의 li 부분에 우클릭 / 카피 / copy selector
' ' 공백에 tag값 넣어줌 그러면 상세 페이지만 따로 브라우져에 띄워줌 예) #content > div.cover-masonry > div > ul > li:nth-child(1) 에서 #은 ID 의미
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()
------------------------------------------
#### 브라우저 완전 종료
driver.quit()
-------------------------------------
#### google에서 selenium python document 검색
https://selenium-python.readthedocs.io/
webDrive API에서 Action Chains
다양한 마우스 기능들 담당고할 selenium python document (google에서 검색)
driver.quit()
-----------------------------------------
### 검색어 입력
#### CSS_SELECTOR
- 네이버 검색창에 검색어 입력
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome('../ds_study/driver/chromedriver.exe')
driver.get('https://www.naver.com')
keyword = driver.find_element(By.CSS_SELECTOR, '#query')
keyword.send_keys('파이썬')
- 찾기 (돋보기) 버튼 클릭
search_btn = driver.find_element(By.CSS_SELECTOR, '#search-btn')
search_btn.click
-----------------------------
#### xpath
- '//': 최상위
- '*': 자손 태그
- '/' : 자식 태그
----------------------------------
# 원하는 페이지의 개발자 도구에서 찾아서 저장시 xpath로 함
- 최상위 -
driver.find_element(By.XPATH, '//*[@id="query"]').send_keys('xpath')
- 자손 태그 -
driver.find_element(By.XPATH, '//*[@id="search-btn"]').click()
driver.quit()
------------------------------------------------------------------------------------
### 검색어 입력 (예제)
#### webdriver import
```
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome('../ds_study/driver/chromedriver.exe')
driver.get('http://pinkwink.kr')
# 1. 지역 선택 고정
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
- 현재 화면의 html코드 가져오기
from bs4 import BeautifulSoup
req = driver.page_source
# web page의 html 코드를 beautifulsoup으로 읽어와서
soup = BeautifulSoup(req, 'html.parser')
---------------------------------------------------------
#### 원하는 데이터를 뽑아오도록 제어
soup.select('.post-item')
contents = soup.select('.post-item')
len(contents)
contents[2]
```