Selenium
은 Python을 이용해서 웹 브라우저를 조작할 수 있는 자동화 프레임워크 입니다.pip install
을 이용하여 Selenium
프레임워크를 설치한다.%pip install selenium
WebDriver
가 필요합니다.pip install
을 이용하여 설치합니다.
selenium
으로부터webdriver
모듈을 불러옵니다.from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager
- 불러온 모듈 webdriver에서 Chrome() 객체를 생성합니다.
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
.get(url)
을 이용하여 http://www.example.com 으로 요청을 보냅니다.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver.get("http://www.example.com")
- 응답을 받은 후
page_source
속성을 통해 Response의 HTML 문서를 확인할 수 있습니다.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver.get("http://www.example.com") print(driver.page_source)
<html><head> <title>Example Domain</title> <meta charset="utf-8"> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type="text/css"> body { background-color: #f0f0f2; margin: 0; padding: 0; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; } div { width: 600px; margin: 5em auto; padding: 2em; background-color: #fdfdff; border-radius: 0.5em; box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02); } a:link, a:visited { color: #38488f; text-decoration: none; } @media (max-width: 700px) { div { margin: 0 auto; width: auto; } } </style> </head> <body> <div> <h1>Example Domain</h1> <p>This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.</p> <p><a href="https://www.iana.org/domains/example">More information...</a></p> </div> </body></html>
Driver
를 통해 프로그램을 실행하면 Chrome 창이 계속 켜져있게 됩니다. 이때 with-as
구문을 이용해서 주어진 명령이 끝나면 Driver
를 종료하도록 설정할 수 있습니다.with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:
driver.get("http://www.example.com")
print(driver.page_source)
selenium은 이미 브라우저를 활용하기 때문에 받아온 응답으로부터 특정 요소를 추출할 수도 있습니다.
.find_element(by, target)
by
: 대상을 찾는 기준 : ID
, TAG_NAME
, CLASS_NAME
, ...target
: 대상의 속성 .find_elements(by, target)
by
: 대상을 찾는 기준 : ID
, TAG_NAME
, CLASS_NAME
, ...target
: 대상의 속성
- p 태그에 해당하는 요소를 하나 찾습니다.
from selenium.webdriver.common.by import By with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver: driver.get("http://www.example.com") print(driver.find_element(By.TAG_NAME, "p").text)
This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.
- p 태그에 해당하는 요소 여러개를 찾습니다.
with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver: driver.get("http://www.example.com") for element in driver.find_elements(By.TAG_NAME, "p"): print("Text : ", element.text)
Text : This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission. Text : More information...