데이터 분석/웹 스크래핑

[Web Scrapping] request 모듈

eunnys 2023. 10. 30. 15:58

특정 사이트 접속

- requests 객체를 import 한 후 get() 함수를 이용해 지정된 사이트에 접속한다.

 

response = requests.get(url, params, **kwargs)

 

▷ url : 접속할 url 정보

▷  params : 해당 url의 파라미터 문자열 정보 입력 (dictionary 객체로 전달)

▷ **kwargs : 그 외 매개변수 (header 값)

                   - verify=False : SSL 인증서를 사용하는 경우

                   - auth=("id", "pass") : 인증이 필요한 경우

                   - headers = {'Content-Type': 'application/json; charset=utf-8')

                   - cookies = {'sessionKey': 'sessionValue'}

                   - timeout = 3

 

 

requests 모듈을 이용한 사이트 접속 후 페이지 정보 가져오기

import requests
response = requests.get('https://www.naver.com') # get 방식으로 요청
print(response.status_code) # 200
response = requests.get('https://www.naver.com/hello.html') # get 방식으로 요청
print(response.status_code) # 404에러

 

○ 데이터 파싱

    requests.get(url).text  (text 형태로 추출)

    requests.get(url).content  (byte 형태로 추출)

 

○ 상태 코드 확인

    response.status_code  (상태코드 확인)

 

 

응답코드

  • 지정된 사이트에 접속한 후 status_code 속성을 이용하면 ♂응답 코드 값을 알 수 있다.
  • 응답코드 값이 200이면 정상 접속, ♂다른 값이면 요류이거나 권한이 없음을 나타내므로 상태에 따라 ♂처리를 다르게 해야 한다.
import requests
response = requests.get('http://naver.com')  # 200 : 정상
print('응답코드 : ', response.status_code)

 

 

parameter를 이용한 검색결과 조회

- 요청을 보낼 떄 파라미터를 이용해 그 결과를 확인할 수 있다.

 

import requests

URL = 'https://movie.daum.net/moviedb/main'
params = {'movield':'41246'} 

response = requests.get(URL, params=params)
response.raise_for_status()

with open('GoodNightAndGoodLuck.html', 'w', encoding='utf-8') as f:
	f.write(response.text)

 

- 파라미터가 여러 개일 경우 다음과 같이 dictionary 여러 개를 주어 처리 가능

URL = 'https://comic.naver.com/webtoon/detail.nhn'
params = {'titleld':703846, 'no':144, 'weekday':'true'}