Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

Python Selenium으로 HTML 소스 코드 가져오기 – page_source와 execute_script 완벽 가이드

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.innerHTMLbody 태그 내부의 내용만 반환한다는 차이점도 기억해 두면 유용합니다. 상황에 따라 적절한 방법을 선택해 사용하세요.