selenium
===
[TOC]
## 소개
> static 페이지는 requests 를 통해 가져 올 수 있지만, js를 통해 동적으로 변하는 페이지는 브라우저를 통해 직접 request를 보내고 response 를 받아오는 작업이 필요하다. chrome webdriver를 통해 브라우저를 직접 제어하는 패키지이다.
## 설치
1. chrome 정보 창을 통해 현재 버전 확인 `현재 기준 107.0.5304.87(공식 빌드) (arm64)`
2. 크롬 드라이버 페이지에 접속해 설치된 크롬 브라우저의 버전과 동일한 웹 드라이버를 다운로드
3. selenium 모듈 설치 `pip install selenium`
> **colab** 에서는 원격 인스턴스를 사용하기 때문에 추가 작업 필요하다
```python=
!pip install selenium
!apt-get update
!apt install chromium-chromedriver
... (생략)
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver', chrome_options=chrome_options)
... (생략)
```
## 예시
```python=
from bs4 import BeautifulSoup
# selenium의 webdriver를 사용하기 위한 import
from selenium import webdriver
# selenium으로 키를 조작하기 위한 import
from selenium.webdriver.common.keys import Keys
# 페이지 로딩을 기다리는데에 사용할 time 모듈 import
import time
# 크롬드라이버 실행
# 경로 예: '/Users/Name/Downloads/chromedriver'(Mac OS)
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver', chrome_options=chrome_options)
#크롬 드라이버에 url 주소 넣고 실행
driver.get('https://www.naver.com/')
html = driver.page_source
soup = BeautifulSoup(html, "html.parser")
tag_list = soup.select("body p")
for tag in tag_list:
print(tag.text)
driver.close()
```
```
ON/OFF 설정은해당기기(브라우저)에 저장됩니다.
동일한 시간대/연령/남녀별 사용자 그룹의관심사에 맞춰 자동완성을 제공합니다.
해당 언론사 사정으로 접근이 제한됩니다.
을(를)구독해지 하시겠습니까?
구독한 언론사에 추가되었습니다.
해당 언론사 사정으로 접근이 제한됩니다.
을(를)구독해지 하시겠습니까?
구독한 언론사에 추가되었습니다.
해당 언론사 사정으로 접근이 일시 제한됩니다.
을(를)구독해지 하시겠습니까?
해당 언론사 사정으로 접근이 제한됩니다.
을(를)구독해지 하시겠습니까?
언론사 구독 설정에서 관심있는 언론사를 구독하시면언론사가 직접 편집한 뉴스들을 네이버 홈에서 바로 보실 수 있습니다.
Connect with people
```
###### tags: `python` `크롤링`