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!