[파이썬] requests-html 모바일 버전과 데스크톱 버전 비교 스크레이핑

스크레이핑은 웹 페이지에서 데이터를 추출하는 과정을 의미합니다. 이를 위해 파이썬에서는 다양한 라이브러리를 사용할 수 있습니다. 그 중 requests-html은 웹 스크레이핑에 유용한 기능을 제공하는 인기있는 라이브러리입니다.

이번 블로그에서는 requests-html을 사용하여 모바일 버전과 데스크톱 버전의 웹 페이지를 스크레이핑하는 방법을 비교하겠습니다. 모바일 버전과 데스크톱 버전의 웹 페이지는 서로 다른 HTML 구조와 CSS 스타일을 갖고 있을 수 있으므로, 이를 고려하여 스크레이핑 코드를 작성해야 합니다.

설치 및 설정

먼저, requests-html 라이브러리를 설치해야 합니다. 아래의 명령어를 사용하여 pip를 통해 라이브러리를 설치할 수 있습니다.

pip install requests-html

설치가 완료되면, requests-html을 가져옵니다.

from requests_html import HTMLSession

모바일 버전 스크레이핑

모바일 버전의 웹 페이지를 스크레이핑하기 위해서는, user-agent 헤더를 모바일 브라우저의 User-Agent 값으로 설정해야 합니다. 일반적으로 모바일 브라우저의 User-Agent 값은 “Mozilla/5.0 (Linux; Android 10; SM-G975F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Mobile Safari/537.36”와 같이 구성되어 있습니다.

session = HTMLSession()
url = "https://example.com/m"
headers = {'user-agent': 'Mozilla/5.0 (Linux; Android 10; SM-G975F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Mobile Safari/537.36'}
response = session.get(url, headers=headers)

위의 코드에서 모바일 버전의 웹 페이지에 접속하기 위해 user-agent 헤더를 설정하였습니다. get() 메서드를 사용하여 해당 URL에 접속하고, 응답을 response 변수에 저장하였습니다.

데스크톱 버전 스크레이핑

데스크톱 버전의 웹 페이지를 스크레이핑하기 위해서는 user-agent 헤더를 일반적인 데스크톱 브라우저의 User-Agent 값으로 설정하면 됩니다. 데스크톱 브라우저의 User-Agent 값은 “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36”와 같이 구성되어 있습니다.

session = HTMLSession()
url = "https://example.com"
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36'}
response = session.get(url, headers=headers)

위의 코드에서 데스크톱 버전의 웹 페이지에 접속하기 위해 user-agent 헤더를 설정하였습니다.

데이터 추출

웹 페이지에 접속하고 나면, requests-html을 사용하여 데이터를 추출할 수 있습니다. 이 라이브러리는 CSS 선택자를 사용하여 원하는 데이터 요소를 선택할 수 있으며, XPath도 지원합니다.

# CSS 선택자를 사용한 데이터 추출
titles = response.html.find('.title')

# XPath를 사용한 데이터 추출
links = response.html.xpath('//a')

위의 코드는 .title class를 가진 요소와 모든 <a> 태그를 추출하는 예시입니다. 추출한 데이터를 변수에 저장하여 이후 활용할 수 있습니다.

요약

이번 블로그에서는 requests-html을 사용하여 모바일 버전과 데스크톱 버전의 웹 페이지를 스크레이핑하는 방법을 비교하였습니다. user-agent 헤더를 적절하게 설정하여 모바일 버전과 데스크톱 버전의 웹 페이지에 접속하고, requests-html을 사용하여 데이터를 추출할 수 있습니다. 이를 통해 필요한 데이터를 쉽게 스크레이핑할 수 있습니다.