Requests로 웹 페이지 요청하기 - 데이터 수집의 시작
파이썬의 강력한 도구인 Requests 라이브러리를 사용하여 웹 페이지에 요청을 보내고 데이터를 수집하는 방법을 정리해 보자.
Requests 라이브러리는 웹 스크래핑을 위한 필수 도구이다. 간단하고 직관적인 인터페이스를 제공하여 웹 페이지 요청을 보내고, 응답 데이터를 처리하는 작업을 쉽게 수행할 수 있도록 돕는다.
Requests 라이브러리 소개
Requests 라이브러리는 파이썬에서 웹 페이지에 요청을 보내고 데이터를 수집하는 데 가장 널리 사용되는 라이브러리이다. Requests 라이브러리는 HTTP 프로토콜을 기반으로 작동하며, GET, POST, PUT, DELETE 등 다양한 HTTP 메서드를 지원한다.
Requests 라이브러리의 장점
- 간편한 사용: 복잡한 HTTP 프로토콜 설정 없이 간편하게 웹 페이지 요청을 보낼 수 있다.
- 강력한 기능: GET, POST 요청뿐만 아니라, PUT, DELETE, HEAD, OPTIONS 등 다양한 HTTP 메서드를 지원한다.
- 데이터 처리: 응답 데이터를 텍스트, JSON, 바이너리 데이터 등 다양한 형식으로 처리할 수 있다.
- 오류 처리: 네트워크 오류, 서버 오류 등을 처리할 수 있는 다양한 기능을 제공한다.
Requests 기본 사용법: 웹 페이지 요청 보내기
Requests 라이브러리를 사용하여 웹 페이지 요청을 보내는 방법은 매우 간단하다.
Requests 라이브러리 설치
먼저 requests 라이브러리를 설치해야 한다. 터미널 또는 VS code의 터미널에서 다음 명령을 실행한다.
1 | pip install requests |
GET 요청
requests.get() 함수를 사용하여 GET 요청을 보낼 수 있다. GET 요청은 웹 서버에서 데이터를 가져오는 데 사용된다.
1 | import requests |
- requests.get(url): url을 인자로 전달하여 해당 웹 페이지에 GET 요청을 보낸다.
- response.status_code: 서버에서 반환된 HTTP 상태 코드를 나타낸다. 200은 성공을 의미한다.
- response.text: 서버에서 반환된 웹 페이지의 HTML 내용을 텍스트 형식으로 나타낸다.
POST 요청
requests.post() 함수를 사용하여 POST 요청을 보낼 수 있다. POST 요청은 웹 서버에 데이터를 전송하는 데 사용된다.
1 | import requests |
- requests.post(url, data=data): url을 인자로 전달하여 해당 웹 페이지에 POST 요청을 보낸다. data 인자는 웹 서버로 전송할 데이터를 나타낸다.
응답 코드 해석: 요청 결과 확인하기
웹 서버는 요청에 대한 응답으로 HTTP 상태 코드를 함께 전송한다. HTTP 상태 코드는 요청 결과를 나타내는 코드이며, 200인 성공, 404는 페이지를 찾을 수 없음, 500은 서버 오류를 나타낸다.
- response.status_code: 응답 객체의 status_code 속성을 사용하여 HTTP 상태 코드를 확인할 수 있다.
응답 데이터 추출: 텍스트, JSON 데이터 다루기
Requests 라이브러리는 웹 서버에서 반환된 데이터를 다양한 형식으로 처리할 수 있다.
- 텍스트 데이터 추출: response.text 속성을 사용하여 텍스트 데이터를 추출할 수 있다.
- JSON 데이터 추출: 웹 서버에서 JSON 형식의 데이터를 반환하는 경우, response.json() 메서드를 사용하여 JSON 데이터를 파싱 할 수 있다.
1 | import requests |
Requests의 고급 기능 활용
Requests 라이브러리는 기본적인 웹 페이지 요청 기능 외에도 다양한 고급 기능을 제공한다.
- 헤더 설정: headers 인자를 사용하여 요청 헤더를 설정할 수 있다. 헤더에는 사용자 정보, 요청 정보, 인증 정보를 포함할 수 있다.
1 | import requests |
- 쿼리 파라미터 전달: params 인자를 사용하여 URL에 쿼리 파라미터를 추가할 수 있다. 쿼리 파라미터는 웹 서버로 전달할 데이터를 나타낸다.
1 | import requests |
- 인증 처리: auth 인자를 사용하여 인증 정보를 전달할 수 있다. 웹 페이지에 접근하기 위해 인증이 필요한 경우, 이 기능을 사용한다.
jsonplaceholder 서버에서는 인증에 대해서는 서비스를 지원하지 않으므로, 가상의 서버로 예제를 대신한다.
1 | import requests |
- 파일 업로드/다운로드: files 인자를 사용하여 파일 데이터를 전송할 수 있다. response.content를 사용하여 파일 데이터를 다운로드할 수 있다.
jsonplaceholder 서버에서는 인증에 대해서는 서비스를 지원하지 않으므로, 가상의 서버로 예제를 대신한다.
1 | import requests |
마무리
이 글에서는 웹 스크래핑의 기본 도구인 Requests 라이브러리에 대해 알아보았다. Requests 라이브러리를 사용하면 웹 페이지에 요청을 보내고, 응답 데이터를 처리하는 작업을 쉽게 수행할 수 있다.
다음으로 Requests 라이브러리를 통해 수집한 HTML 문서를 파싱하고, 원하는 데이터를 추출하는 방법을 배울 필요가 있다. 이것은 바로 BeatifulSoup 라이브러리를 이용하면 달성할 수 있다.