Python/웹 스크래핑 및 웹 자동화

Selenium을 활용한 HTML 태그 선택하기

P_eli 2024. 2. 25. 20:15
728x90
반응형

1. XPath를 사용한 선택

XPath는 XML 문서의 특정 요소를 선택하기 위한 언어입니다. Selenium에서는 XPath를 사용하여 웹 페이지에서 요소를 식별할 수 있습니다.

예를 들어, 다음과 같은 HTML코드 가  있다고 가정해봅시다.

<html>
<head><title>Example</title></head>
<body>
  <div id="content">
    <h1>Welcome</h1>
    <p>This is a paragraph.</p>
  </div>
</body>
</html>

 

위 HTML 코드 에서 h1 요소의 텍스트 값을 선택 하려면 아래와 같은 코드로 선택 할 수 있습니다.

from selenium import webdriver

# 웹 드라이버 초기화
driver = webdriver.Chrome()

# 웹 페이지 열기
driver.get("https://example.com")

# XPath를 사용하여 요소 선택
element = driver.find_element_by_xpath("//h1")
print("선택된 요소의 텍스트:", element.text)

# 브라우저 닫기
driver.quit()

 

2. CSS 선택자를 사용한 선택

CSS 선택자는 스타일을 적용하기 위해 HTML 요소를 선택하는 데 사용되는 강력한 문법입니다. Selenium에서도 CSS 선택자를 사용하여 요소를 선택할 수 있습니다.

 

예를 들어, 위와 같은 HTML이 있다면 아래 코드처럼 CSS 선택자를 사용하여 p 태그 요소의 텍스트 값을 선택할 수 있습니다.

from selenium import webdriver

# 웹 드라이버 초기화
driver = webdriver.Chrome()

# 웹 페이지 열기
driver.get("https://example.com")

# CSS 선택자를 사용하여 요소 선택
element = driver.find_element_by_css_selector("p")
print("선택된 요소의 텍스트:", element.text)

# 브라우저 닫기
driver.quit()

 

 

3. 클래스 이름을 사용한 선택

HTML 요소에 클래스가 지정되어 있으면 해당 클래스 이름을 사용하여 요소를 선택할 수 있습니다.

예를 들어, 다음과 같은 HTML이 있다고 가정해봅시다.

<html>
<head><title>Example</title></head>
<body>
  <div class="highlight">
    <p>This is a highlighted paragraph.</p>
  </div>
</body>
</html>

 

div의 class에 있는 p 태그의 텍스트 값을 추출하려면 아래와 같은 코드로 선택할 수 있습니다.

from selenium import webdriver

# 웹 드라이버 초기화
driver = webdriver.Chrome()

# 웹 페이지 열기
driver.get("https://example.com")

# 클래스 이름을 사용하여 요소 선택
element = driver.find_element_by_class_name("highlight")
print("선택된 요소의 텍스트:", element.text)

# 브라우저 닫기
driver.quit()

 

4. 부모 태그 선택하기

예를 들어, 다음과 같은 HTML이 있다고 가정해봅시다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML 부모 태그 선택 예제</title>
</head>
<body>
    <div id="parent">
        <p>This is a paragraph inside a div.</p>
    </div>
</body>
</html>

 

먼저 웹 페이지의 요소를 찾는 데 사용되는 다양한 방법을 정의하는 클래스 By를 가져옵니다.

from selenium.webdriver.common.by import By

 

부모 요소를 선택하려면 자식 요소를 먼저 선택하고 그것의 부모를 찾아야 합니다. 아래 예제에서는 find_element_by_xpath() 메서드를 사용하여 자식 요소를 선택하고, find_element(By.XPATH, "..")를 사용하여 부모 요소를 선택합니다.

 

 

from selenium import webdriver
from selenium.webdriver.common.by import By

# 웹 드라이버 초기화
driver = webdriver.Chrome()

# 웹 페이지 열기
driver.get("file:///path/to/your/html/file.html")  # 로컬 파일 경로를 지정해야 합니다.

# 자식 요소 선택
child_element = driver.find_element(By.XPATH, "//p")

# 부모 요소 선택
parent_element = child_element.find_element(By.XPATH, "..")

# 부모 요소의 텍스트 출력
print("선택된 부모 요소의 텍스트:", parent_element.text)

# 브라우저 닫기
driver.quit()

 

위의 코드에서는 먼저 p 요소를 선택하고, 그 다음 ".."을 사용하여 부모 요소인 div를 선택합니다. 그런 다음 선택된 부모 요소의 텍스트를 출력합니다.

이렇게하면 Selenium을 사용하여 HTML 부모 태그를 선택할 수 있습니다. 이 기능을 사용하여 웹 스크레이핑 또는 웹 테스트를 보다 유연하게 수행할 수 있습니다.

728x90
반응형