[파이썬] requests-html `Element` 객체의 메서드

requests-html은 Python을 위한 강력한 웹 스크래핑 라이브러리로, requests와 HTML을 다루기 위한 편리한 기능을 제공합니다. 이 라이브러리의 핵심 요소 중 하나는 Element 객체인데, 이 객체를 사용하여 웹 페이지의 요소를 선택하고 조작할 수 있습니다. 아래에서는 requests-html의 Element 객체의 주요 메서드에 대해 살펴보겠습니다.

find( ) 메서드

find() 메서드는 지정된 선택자에 해당하는 첫 번째 요소를 반환합니다. 이 메서드는 BeautifulSoup의 find() 메서드와 유사한 동작을 수행합니다. 예를 들어, 다음과 같이 Element 객체를 생성하고 find() 메서드를 호출하여 선택자에 해당하는 요소를 찾을 수 있습니다:

from requests_html import HTMLSession

session = HTMLSession()

# 웹 페이지 가져오기
r = session.get('https://www.example.com')

# Element 객체 생성
element = r.html.find('#my-element', first=True)

# 선택자에 해당하는 요소 출력
print(element.text)

위의 예제에서는 find("#my-element", first=True)를 사용하여 id가 “my-element”인 첫 번째 요소를 찾고, 해당 요소의 텍스트를 출력합니다.

find_all( ) 메서드

find_all() 메서드는 지정된 선택자에 해당하는 모든 요소를 리스트로 반환합니다. 이 메서드는 BeautifulSoup의 find_all() 메서드와 유사한 동작을 수행합니다. 예를 들어, 다음과 같이 Element 객체를 생성하고 find_all() 메서드를 호출하여 선택자에 해당하는 모든 요소를 찾을 수 있습니다:

from requests_html import HTMLSession

session = HTMLSession()

# 웹 페이지 가져오기
r = session.get('https://www.example.com')

# Element 객체 생성
elements = r.html.find('.my-class')

# 선택자에 해당하는 요소 출력
for element in elements:
    print(element.text)

위의 예제에서는 find_all(".my-class")를 사용하여 class가 “my-class”인 모든 요소를 찾고, 각 요소의 텍스트를 출력합니다.

search( ) 메서드

search() 메서드는 주어진 정규식 패턴에 일치하는 모든 요소를 반환합니다. 이 메서드는 특정 패턴을 찾기 위해 사용될 수 있습니다. 예를 들어, 다음과 같이 Element 객체를 생성하고 search() 메서드를 호출하여 패턴에 해당하는 요소를 찾을 수 있습니다:

from requests_html import HTMLSession

session = HTMLSession()

# 웹 페이지 가져오기
r = session.get('https://www.example.com')

# Element 객체 생성
elements = r.html.search('Hello, {}!')

# 패턴에 해당하는 요소 출력
for element in elements:
    print(element[0])

위의 예제에서는 search("Hello, {}!")를 사용하여 “Hello, {}!” 패턴에 일치하는 요소를 찾고, 해당 요소의 일치하는 부분을 출력합니다.

CSS 선택자 사용

find()find_all() 메서드에서는 CSS 선택자를 사용하여 요소를 찾을 수 있습니다. CSS 선택자에는 태그명, 클래스, ID, 속성 등을 사용할 수 있습니다. 예를 들어, 다음과 같이 CSS 선택자를 사용하여 요소를 찾을 수 있습니다:

from requests_html import HTMLSession

session = HTMLSession()

# 웹 페이지 가져오기
r = session.get('https://www.example.com')

# Element 객체 생성
element = r.html.find('h1.title')[0]

# 선택자에 해당하는 요소 출력
print(element.text)

위의 예제에서는 find("h1.title")을 사용하여 <h1 class="title"> 태그를 선택하고, 해당 요소의 텍스트를 출력합니다.

requests-html의 Element 객체는 웹 스크래핑 작업을 쉽게 수행할 수 있도록 다양한 메서드를 제공합니다. 위에서 소개한 메서드들은 가장 일반적으로 사용되는 메서드 중 일부에 불과합니다. Element 객체에 대해 자세히 알아보려면 requests-html 공식 문서를 참조하십시오.