[python] Requests-HTML로 웹 페이지에서 데이터 추출하기

많은 웹 사이트들이 데이터를 제공하고 있습니다. 웹 페이지에서 데이터를 추출하는 작업은 웹 스크래핑이라고도 알려져 있습니다. Python의 Requests-HTML 라이브러리를 사용하면 웹 페이지에서 데이터를 간단하게 추출할 수 있습니다.

Requests-HTML 설치하기

먼저, Requests-HTML을 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다:

pip install requests-html

웹 페이지에서 데이터 추출하기

Requests-HTML을 사용하여 웹 페이지에서 데이터를 추출하는 방법을 알아보겠습니다. 먼저, 필요한 라이브러리를 가져와야 합니다:

from requests_html import HTMLSession

다음으로, 데이터를 추출할 웹 페이지의 URL을 지정해야 합니다:

url = "https://example.com"

HTMLSession 객체를 생성하고 해당 URL을 사용하여 웹 페이지에 접속합니다:

session = HTMLSession()
response = session.get(url)

이제 response 객체를 사용하여 웹 페이지의 데이터를 추출할 수 있습니다.

CSS 선택자를 사용하여 데이터 추출하기

Requests-HTML은 CSS 선택자를 사용하여 데이터를 추출하는 기능을 제공합니다. 웹 페이지에서 추출하고자 하는 데이터의 CSS 선택자를 알아내어 사용하면 됩니다.

예를 들어, 웹 페이지에서 제목을 추출하고 싶다면 다음과 같이 작성할 수 있습니다:

title = response.html.find('h1', first=True).text
print(title)

위 코드에서 find 메서드의 첫 번째 인자로는 추출하고자 하는 요소의 CSS 선택자를 입력하고, first=True 옵션을 사용하여 첫 번째 요소만 추출합니다. 마지막으로 text 속성을 사용하여 요소의 텍스트를 얻습니다.

동적으로 로딩되는 웹 페이지에서 데이터 추출하기

일부 웹 페이지는 JavaScript를 사용하여 동적으로 데이터를 로딩하는 경우가 있습니다. 이런 경우에는 render 메서드를 사용하여 JavaScript를 실행한 후 데이터를 추출합니다.

예를 들어, 동적으로 로딩되는 웹 페이지에서 이미지 URL을 추출한다면 다음과 같이 작성할 수 있습니다:

response.html.render()
images = response.html.find('img')
for image in images:
    url = image.attrs['src']
    print(url)

위 코드에서 render 메서드를 사용하여 JavaScript를 실행한 후 img 태그의 모든 이미지를 추출합니다. 각 이미지의 URL은 attrs 속성을 사용하여 얻을 수 있습니다.

요약

Python의 Requests-HTML 라이브러리를 사용하면 웹 페이지에서 데이터를 추출하는 작업을 손쉽게 수행할 수 있습니다. CSS 선택자를 사용하여 정적인 웹 페이지뿐만 아니라 동적으로 로딩되는 웹 페이지에서도 데이터를 추출할 수 있습니다. 이를 통해 웹 스크래핑 작업을 효과적으로 수행할 수 있습니다.

더 많은 정보를 원하시면 Requests-HTML 공식 문서를 참조하세요.