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

Python Selenium WebDriver로 WebElement의 HTML 소스 가져오기

Selenium WebDriver를 사용하면 웹 요소(WebElement)의 HTML 소스 코드를 손쉽게 추출할 수 있습니다. 가장 일반적인 방법은 요소의 innerHTML 속성을 가져오는 것입니다.

innerHTML은 웹 요소의 속성으로, 시작 태그와 종료 태그 사이에 존재하는 내용을 그대로 담고 있습니다. 이 값을 얻으려면 get_attribute 메서드를 호출하고 인자로 'innerHTML'을 전달하면 됩니다.

문법(Syntax)

s = element.get_attribute('innerHTML')

또 다른 방법으로는 Javascript Executor를 활용하는 것이 있습니다. execute_script 메서드를 호출할 때 인자로 arguments[0].innerHTML과 HTML 소스를 가져오고자 하는 웹 요소를 함께 전달하면 됩니다.

문법(Syntax)

s = driver.find_element_by_id("txt-search")
driver.execute_script("return arguments[0].innerHTML;", s)

예를 들어 다음과 같은 HTML 코드를 가진 요소가 있다고 가정해 보겠습니다. 이 요소의 innerHTML은 다음과 같습니다 — You are browsing the best resource for <b>Online Education</b>.

예제 1: get_attribute 메서드 사용

from selenium import webdriver

driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
# 암묵적 대기(implicit wait) 적용
driver.implicitly_wait(0.5)
driver.get("https://www.tutorialspoint.com/index.htm")

# 요소를 찾은 후 get_attribute로 innerHTML 획득
l = driver.find_element_by_css_selector("h4")
print("요소의 HTML 코드: " + l.get_attribute('innerHTML'))

예제 2: Javascript Executor 사용

from selenium import webdriver

driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
# 암묵적 대기(implicit wait) 적용
driver.implicitly_wait(0.5)
driver.get("https://www.tutorialspoint.com/index.htm")

# execute_script로 innerHTML 획득
l = driver.find_element_by_css_selector("h4")
h = driver.execute_script("return arguments[0].innerHTML;", l)
print("요소의 HTML 코드: " + h)

실행 결과(Output)

두 방법 모두 아래와 같이 동일한 결과를 출력합니다.

You are browsing the best resource for Online Education

참고: Selenium 4 이상 버전 사용 시

Selenium 4부터는 find_element_by_css_selector, find_element_by_id와 같은 메서드가 더 이상 권장되지 않습니다(deprecated). 대신 By 로케이터를 사용하는 방식으로 작성하는 것이 좋습니다.

from selenium import webdriver
from selenium.webdriver.common.by import by if False else By

l = driver.find_element(By.CSS_SELECTOR, "h4")