[파이썬] requests-html HTML 문서의 구조 파악

HTML 문서를 파싱하고 그 구조를 파악하는 작업은 웹 크롤링이나 웹 스크레이핑을 할 때 일반적으로 수행되는 작업입니다. requests-html 모듈은 파이썬에서 HTML을 다루는 데 매우 유용한 도구입니다. 이번 블로그 포스트에서는 requests-html을 사용하여 HTML 문서의 구조를 파악하는 방법에 대해 알아보겠습니다.

requests-html 설치

먼저, requests-html 모듈을 설치해야 합니다. pip를 사용하여 다음 명령을 실행하여 requests-html을 설치할 수 있습니다.

pip install requests-html

requests-html로 HTML 문서 가져오기

requests-html을 사용하여 웹 페이지의 HTML 문서를 가져올 수 있습니다. 특정 URL에서 HTML을 가져오려면 다음과 같이 코드를 작성할 수 있습니다.

from requests_html import HTMLSession

session = HTMLSession()

response = session.get('https://www.example.com')
html = response.text

위의 예제에서는 requests-html의 HTMLSession 클래스를 사용하여 세션을 만들고, get 메서드를 사용하여 해당 URL로부터 HTML 문서를 가져오고 있습니다.

HTML 문서 파싱하기

requests-html은 HTML 문서를 파싱하여 태그, 클래스, ID 등의 요소를 검색하는데 사용할 수 있는 다양한 메서드와 속성을 제공합니다. 아래의 예제를 통해 HTML 문서를 파싱하는 방법을 알아보겠습니다.

from requests_html import HTML

html_obj = HTML(html=html)

# CSS 선택자를 사용하여 태그 검색
results = html_obj.find('h1')

for result in results:
    print(result.text)

# 클래스 이름을 사용하여 태그 검색
results = html_obj.find('.my-class')

for result in results:
    print(result.text)

위의 예제에서는 HTML 클래스를 사용하여 HTML 문서를 파싱하고, find 메서드를 사용하여 태그나 클래스 이름을 기준으로 요소를 검색하고 있습니다. 반환된 결과에는 여러 요소가 포함될 수 있으므로, for 루프를 사용하여 결과를 반복하여 처리할 수 있습니다.

요소의 속성 추출하기

HTML 문서의 요소를 파싱한 후에는 요소의 속성에 접근할 수 있습니다. requests-html은 다양한 메서드와 속성을 제공하여 요소의 속성을 쉽게 추출할 수 있습니다. 아래의 예제를 통해 속성을 추출하는 방법을 알아보겠습니다.

from requests_html import HTML

html_obj = HTML(html=html)

# 속성 추출
element = html_obj.find('a', first=True)
href = element.attrs['href']
text = element.text

print(href)
print(text)

위의 예제에서는 find 메서드로 ‘a’ 태그를 검색하고, first=True 옵션을 사용하여 검색된 요소 중 첫 번째 요소를 선택하고 있습니다. 그리고 attrs 속성을 사용하여 요소의 속성을 접근하고 있습니다.

결론

이번 블로그 포스트에서는 requests-html을 사용하여 HTML 문서의 구조를 파악하는 방법에 대해 알아보았습니다. requests-html은 웹 크롤링이나 웹 스크레이핑을 할 때 편리하게 사용할 수 있는 강력한 도구입니다.

HTML 문서를 파싱하고 요소를 검색하고 속성을 추출하는 등 다양한 기능을 사용할 수 있으니, 요구사항에 맞게 활용해보세요. Happy coding!