Selenium 개념
.
.
설치
conda install selenuim 으로 설치해야 한다.
from selenium import webdriver
driver = webdriver.Chrome('./chromedriver') #크롬 드라이버의 경로 지정, 새로운 창이 뜨게 함
driver.get('http://pinkwink.kr/) #get 명령으로 접근하고 싶은 주소 지정
.
.
웹페이지 접근
from selenium import webdriver #크롬 드라이버 실행
driver = webdriver.Chrome(executable_patch = './chromedriver') #경로 지정, 상대경로는 환경에 따라 달라짐! 'path='은 생략 가능
driver.get('http://pinkwink.kr/') #get 명령으로 접근하고 싶은 주소 지정
driver.quit()
🔑 selenium document를 검색해서 셀레니움 사이트에 들어가면 사용 설명서가 나와있느니 잘 사용할 것! 링크
.
.
기본 동작
from selenium.webdriver.common.by import By #태그를 선택하기 위해
first_content = driver.find_element(By.CSS_SELECTOR, '여기에 해당 태그의 copy selector 링크를 가져오면 됨')
first_content.click()
.
.
화면 스크롤
자바 스크립트를 이용해 화면 스크롤 가능한 높이(길이 반환)
: driver.execute_script('return document.body.scrollHight')
화면 스크롤 하단 이동 : driver.execute_script('window.scrollTo(0, document.body.scrollHight);')
화면 스크롤 상단 이동 : driver.execute_script('window.scrollTo(0, 0);')
특정 태그 지정까지 스크롤 이동
from selenium.webdriver import ActionChains
some_tag = driver.find_element(By.CSS_SELECTOR, '태그')
action = ActionChains(driver)
action.move_to_element(some_tag).perform()
🔎 ActionChains : 마우스 움직이거나 클릭, 드래그하는 등의 기능을 복합적으로 사용할 수 있도록 함
.
.
검색어 입력
동일한 방법이지만 태그를 찾는 방법만 다른 CSS_SELECTOR 과 XPATH
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome('../driver/chromedriver')
driver.get('주소') #웹 페이지 연결
keyword = driver.find_element(By.CSS_SELECTOR, '설렉터 주소') #입력창 찾기
keyword.clear() #입력 창 초기화
keyword.send_keys('파이썬') #'파이썬' 입력
search_btn = driver.find_element(By.CSS_SELECTOR., '주소') #검색버튼 클릭
search_btn.click()
driver.find_element(By.XPATH, '엑스패스 주소').send_keys('xpath') #xpath 입력
driver.find_elemnet(By.XPATH, '엑스패스 주소').click #클릭
'//' : 최상위
'/' : 자식 태그 (바로 밑)
'*' : 자손 태그 (자식 태그 아래)
'div[i]' : div 중에서 1번째 태그
selenium과 beautifulsoup를 함께 사용하기
driver.page_source #현재 화면 html 코드 가져오기
[응용해보기]
from bs4 import BeautifulSoup
req = driver.page_source
soup = BeautifulSoup(req, 'html.parser')
#뷰티플수프로 현재 화면을 읽어와서
soup.select('.post-item') #현재화면에서 원하는 데이터를 뽑아오도록 제어
contents = soup.select('.post-item')
len(contents)
contents[2]