Selenium으로 HTML 소스 코드에 접근하는 방법
Python의 Selenium WebDriver를 사용하면 현재 브라우저에 열려 있는 웹 페이지의 HTML 소스 코드를 손쉽게 가져올 수 있습니다. 대표적인 방법은 두 가지로, 첫 번째는 page_source 메서드를 이용하는 것이고, 두 번째는 JavaScript 명령어를 실행하는 execute_script 메서드를 활용하는 것입니다.
방법 1: page_source 메서드 사용
page_source는 현재 페이지의 전체 HTML 소스를 문자열 형태로 반환합니다. 반환된 값을 변수에 저장한 뒤 콘솔에 출력하면 됩니다.
문법
src = driver.page_source
방법 2: execute_script로 JavaScript 명령 실행
Selenium에서는 JavaScript 코드를 직접 실행할 수도 있습니다. execute_script 메서드에 return document.body.innerHTML 명령을 매개변수로 전달하면, body 태그 내부의 HTML 내용을 그대로 얻을 수 있습니다.
문법
h = driver.execute_script("return document.body.innerHTML;")예제 코드
1) page_source 메서드를 사용한 구현
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(0.5)
driver.get("https://www.tutorialspoint.com/index.htm")
# page_source 메서드로 HTML 소스 코드 접근
s = driver.page_source
print(s)2) JavaScript Executor를 사용한 구현
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(0.5)
driver.get("https://www.tutorialspoint.com/index.htm")
# JavaScript 명령으로 HTML 소스 코드 접근
h = driver.execute_script("return document.body.innerHTML")
print(h)참고 사항
위 예제에서는 최신 Selenium 4 환경에 맞춰 webdriver.Chrome() 호출 시 드라이버 경로 지정을 생략했습니다. Selenium 4부터는 기존의 executable_path 인자가 deprecated(사용 중단 권고)되었기 때문입니다. 만약 ChromeDriver 경로를 직접 지정해야 한다면 아래와 같이 Service 객체를 사용하는 것이 좋습니다.
from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service(executable_path="C:\\chromedriver.exe") driver = webdriver.Chrome(service=service)
또한 page_source가 페이지의 전체 HTML을 반환하는 반면, document.body.innerHTML은 body 태그 내부의 내용만 반환한다는 차이점도 기억해 두면 유용합니다. 상황에 따라 적절한 방법을 선택해 사용하세요.