본문 바로가기
Python/크롤링&스크래핑

[웹스크래핑] Requests 라이브러리 기초

by 리미와감자 2023. 1. 14.

Requests 라이브러리

 

웹 서버와 데이터를 주고 받기 위해서는 정해진 프로토콜(HTTP)을 사용해야한다.

Requests는 웹 서버와 정해진 프로토콜에 따라 데이터를 요청하고 전달 받은 데이터를 관리한다.

Requests를 사용하면 프로토콜을 알 필요 없이 정해진 함수만 호출하면 원하는 데이터를 추출할 수 있다.

나중에 배울 셀레니움(Selenium)도 이러한 일련의 일들을 스스로 처리해줘서 내부 동작은 고민할 필요 없다.

 

Requests는 불필요한 데이터를 요청하지 않기 때문에 셀레니움보다 속도가 빠르다. 단점은 세부 내용을 사용자가 컨트롤해야한다.

 


연습 : Google의 HTML 코드 가져오기

1. 원하는 웹페이지의 정보 가져오기

res = requests.get("http://google.com") # 구글 url

 

2. 웹페이지가 문제없는지 확인하기. 문제 없으면 Pass, 문제가 있으면 에러 출력

res.raise_for_status()
print("웹 스크래핑을 진행합니다.")
if res.status_code == requests.codes.ok: #200
    print("웹페이지가 정상이고 정보를 올바르게 받아왔습니다.")
else:
    print("문제가 생겼습니다. [에러코드 ", res.status_code, "]")

위의 두 가지 방법 중 하나를 사용하면 된다.

 

3. HTML코드 파일로 저장하기

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

 

 

전체 코드

# res = requests.get("http://naver.com") # 네이버 url
res = requests.get("http://google.com") # 구글 url
# res = requests.get("https://rimeestdore.tistory.com/") # 원하는 url 정보
res.raise_for_status()
print("웹 스크래핑을 진행합니다.")

print(len(res.text)) # 가져온 url의 HTML 문자 글자 개수
print(res.text) # 가져온 url의 HTML

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

 


함수 정리

  • requests.get() : url 정보 가져오기
  • 인스턴스.raise_for_status() : url이 정상(PASS)인지 비정상(FAIL)인지 반환
  • 인스턴스.status_code : 해당 url이 정상이면 200 반환
  • requests.codes.ok : 상수 200(url이 정상)
  • 인스턴스.text : 해당 url의 HTML 코드

댓글