Allen's 데이터 맛집

파이썬 HTTP 라이브러리 Requests 본문

Programming/Web Scraping

파이썬 HTTP 라이브러리 Requests

Allen93 2023. 8. 7. 22:06

데이터를 수집할 때 많이 쓰이는 라이브러리 Requests에 대해서 알아보겠습니다🎈

 

Requets 모듈은 웹페이지에서 HTTP 요청을 보내 원하는 HTML 정보를 가져오는 라이브러리입니다.

Requests 모듈을 사용하기 위해서는 먼저 웹페이지에서 요청하는 방식인 POSTGET 방식을 알아야 할 필요가 있습니다.

그 이유는 어떤 방식이냐에 따라 parameter(매개변수)를 전달하는 방법이 다르기 때문입니다.

 

POST인지 GET 방식인지 확인하는 방법은 크롬기준으로 개발자 도구(Ctrl + shift + i) -> Network 목록에 들어가면 수많은 소스가 나오는데 아무 페이지나 이동후 소스파일을 확인해 보면 Request Method : 에서 어떤 방식인지 확인할 수 있습니다.

 


Get 방식

GET방식은 배에 물건을 실어 운반할 때 선반 위에 '보이도록' 하여 물건을 운반하는 방식이라 보시면 됩니다

어떤 웹페이지에서 로그인을 할 때 웹서버에 로그인 요청을 하기 위한 정보가 URL을 통해 전달되는데,

쉽게 말해서 ID와 PW가 URL에 노출되어 전달되는 방식입니다.

 

HTML 소스를 받는 방법은

변수 = requests.get('URL 주소')

참고사항 : url은 위에 다른 변수를 선언해 그 변수 안에 코드를 넣은 후 requests.get(URL변수명)으로 해줘도 실행 가능합니다.

Post 방식

POST 방식은 Get 방식과 비교해 볼 때 배의 내부에 물건을 실어 운반하는 방식입니다.

보안에 있어서 데이터를 노출하지 않고  서버와 통신이 가능한 방식입니다.

POST 방식은 파라미터를 딕셔너리 형태로 정의한 후 인자값으로 전달해서 사용합니다

 

변수명 2 = requests.post("url")

ssh 인증서를 사용하는 경우는 url, verify=False 옵션을 넣어준다

D/PW인증이 필요한 경우는 url, auth=("id", "pass") 아이디, 패스워드 형태로 넣어주면 됩니다

 

다운로드

콘솔창에 해당 명령어 입력

-pip install requests

 

기본 requests 동작시키기

import requests
res = requests.get("http://naver.com")
print('응답코드 :', res.status_code) #200이면 정상


if res.status_code == requests.codes.ok :
    print('정상입니다')
else:
    print('문제가 생겼습니다. [에러코드 ', res.status_code< "]")

 

 

아래와 같이 res.raise_for_status() res.raise_for_status()는 문제가 생기면 중지, 없으면 웹 스크래핑 진행합니다

위의 코드를 아래와 같이 단 세줄로 구현이 가능합니다.

import requests
res = requests.get("http://naver.com")
res.raise_for_status()

 

웹페이지 스크래핑 하여 파일로 만들기

Google 사이트를 mygoogle.html 이름을 가진 파일로 생성하여 파일로 저장까지 해 볼 수 있습니다

import requests
res = requests.get("http://google.com")
res.raise_for_status()

print('정상입니다')

print(len(res.text))
print(res.text)

with open('mygoogle.html','w',encoding = 'utf8)') as f:
    f.write(res.text)