[Module] requests 모듈

고보·2024년 2월 13일

1 requests 모듈

  • HTTP 요청을 보내는데 사용되는 모듈
  • HTTP: HyperText Transfer Protocol. 인터넷 상에서 데이터 주고 받는 데 사용되는 프로토콜.
  • GET, POST, PUT, DELETE 의 메서드가 있지만, get과 post만 주로 사용.
  • https://3.python-requests.org/

2 메서드: get, post

import requests

response_get = requests.get('https://api.example.com/data')

print(response_get.text)  # 응답 본문 출력

data = {'key': 'value'}  # POST로 보낼 데이터
response_post = requests.post('https://api.example.com/post', data=data)

print(response_post.status_code)  # 응답 확인
  • 이렇게 get, post로 들고온 객체는 Response 객체.
  • get('url'): url에 파라미터들 포함. url에 데이터가 노출되고, 데이터 길이에 제한 있고, 보안에 취약.
  • post('url', data=data): url에 파라미터를 붙이지 않고, 별도 항목인 request body에 넣어서 요청한다. 상대적으로 보안에 강하다.
    • <form> 태그를 사용해서 사용자로부터 정보를 입력받는 경우, 서버로 전송해야 할 데이터의 용량이 클 때 사용.
    • django에서 주로 사용한다.

3 URL 구조

  • https://search.naver.com/search.naver?query=weather
  • https:/ : 프로토콜.
  • /search.naver.com : 도메인(호스트). 웹 서버의 호스트명으로, 도메인명 또는 IP 주소로 표현된다.
  • 포트번호: 웹 서버 내의 서비스 포트 번호. 생략시에는 디폴트 포트번호로 https는 443, http는 80 사용.
  • /search.naver : 경로. 파일이나 앱의 경로를 의미.
  • ?query = weather : 쿼리스트링. 질의 문자로, &로 구분된 이름=값 쌍 형식으로 표현된다.

4 실제 예시

  • 크롤링 기초 포스팅에 예시 담는다

5 관련 기능들

  • status_code: 응답 코드. 200은 성공, 404는 실패
res = requests.get('url')
res.status_code

6 urllib의 request 모듈

from urllib.request import Request, urlopen

url = Request(df['URL'][0], headers={'User-Agent':'Mozilla/5.0'})
html = urlopen(url)
soup_tmp = BeautifulSoup(html, 'html.parser')
  • urllib의 request 모듈은 파이썬의 기본 모듈. requests는 외부 모듈로 다운 필요.
    전자는 상대적으로 낮은 수준의 HTTP 요청 작업 수행, 후자는 사용자 친화적인 API 제공해서 HTTP 요청 보내는 과정을 더 단순화하고 다양한 기능 지원.
  • 여기서 Request는 url을 받아서 Request 객체를 만드는 것.
  • header={'User-Agent':'Mozilla/5.0'} 부분은 헤더에 User-Agent 추가하는 것으로, 자신을 일반 웹브라우저 사용자로 가장해서 접근 제한 우회하는 방법. 이걸 빼면 웹사이트에서 요청 막힌다.
    https://m.blog.naver.com/kiddwannabe/221185808375
  • urlopen은 URL 또는 Request 객체 받아서, 해당 리소스 열고 읽어서 => HTTP 응답을 나타내는 객체 (HTTP respnse객체)로
  • BeautifulSoup로 HTTP respnse 객체 받아서 BeautifulSoup 객체로 파싱. requests모듈을 썼으면 Response 객체. => 이게 html 문자열이다.
profile
일본에서 일하는 게임 기획자. 시시해서 죽어버리지 않게, 재밌고 의미 있는 컨텐츠에 관심 있습니다. 그 도구로 데이터, AI도 찝적댑니다.

0개의 댓글