[기본 사용 방식]
1 2 3 4 5 6 7 8 9 | import requests requests.get(...) #get요청 (주로 html조회요청) requests.post(...) #post요청 (주로 추가/수정/삭제요청) # get과 post의 차이 : # get은 데이터를 가져오는데 사용되고, # post는 서버의 데이터를 수정하는데 사용된다. requests.put(...) #put요청 requests.delete(...) #delete요청 | cs |
1 2 3 4 5 6 7 8 9 10 11 12 | import requests r = requests.get(url 주소) #url주소에 데이터 요청 r.content # 응답 데이터(binary형식 내용,이미지파일 등) r.text # 응답 데이터(텍스트형식 내용, 텍스트 파일에 씀) r.json # 응답 데이터 JSON형태 r.url # 해당 url 반환 r.status_code # 응답 상태코드 (200 이면 성공) r.headers # 응답 헤더의 {K:V} 형식의 딕셔너리 자료반환 r.encoding = 'utf-8' # 응답 객체에 인코딩 지정 | cs |
[응답 상태코드 구분]
1xx : Informational (단순 정보 제공)
2xx : Successful (성공)
3xx : Redirect (추가 정보 필요)
4xx : Client error
5xx : Server error
특히, response 403 에러가 나는 경우 브라우저가 아닌 것(Python)에 대한 접속 차단으로 인한 것이다. 요청할 때, header에 User-Agent또는 Referer를 지정하고 접근하면 해결 가능하다.
[사용 예시]
ex.1) 요청시 headers에 User-Agent 정보를 크롬으로 지정하여 요청
1 2 3 4 5 6 7 8 9 10 11 12 13 | import requests # 요청시 헤더정보를 크롬으로 지정 request_headers = { 'User-Agent' : ('Mozilla/5.0 (Windows NT 10.0;Win64; x64)\ AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98\ Safari/537.36'), } url = "https://search.naver.com/search.naver" response = requests.get(url,headers = request_headers) print(response) #해당 url 요청할 때 headers를 임의로 설정하여 요청한 케이스 | cs |
ex.2) 요청시 headers에 Referer 정보를 바꾸어 웹에서 접속한 것으로 요청.
수요웹툰 페이지에서 접속한 것으로 요청하여, 웹툰 이미지 파일 가져오기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import os import requests image_url = 'https://image-comic.pstatic.net/webtoon/626907/237\ /20190115192015_d9f2b6e9d878a372dfa6f07ebfc5f14a_IMAG01_1.jpg' # Referer을 지정하여 수요웹툰 복학왕 페이지를 통해서 요청 headers = {'Referer': 'https://comic.naver.com/webtoon/list.nhn?\ titleId=626907&weekday=wed'} response = requests.get(image_url, headers = headers) print(response) # 접속 확인 (200 = 성공) image_data = response.content # binary형식 imgfile = os.path.basename(image_url) # url을 이름으로 하는 비어있는 데이터생성 #파일에 이미지 데이터를 넣기 with open(imgfile, 'wb') as f: f.write(image_data) | cs |
ex.3) 요청시 params지정을 활용한 뉴스기사 웹 크롤링
원하는 뉴스 기사를 들어가서 <F12>를 눌러 개발자 도구에 들어간 뒤, 다음과 같이 해당 페이지에 접속하기 위한 Parameters를 쉽게 추출할 수 있다.
이 Parameters는 다음과 같이 크롤링을 하고자 하는 url에서 "?"에 적혀있는 것 들이다.
https://news.naver.com/main/read.nhn?mode=LS2D&mid=shm&sid1=101&sid2=259&oid=009&aid=0004299807
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import requests # 데이터를 요청하고자 하는 url = https://news.naver.com/main/read.nhn?\ # mode=LS2D&mid=shm&sid1=101&sid2=259&oid=009&aid=0004299807 # params를 지정하여 요청하는 것은 url뒤에 자동으로 ?와 &연산자로 묶어주는역할 url = "https://news.naver.com/main/read.nhn" get_params = { 'mode': 'LS2D', 'mid': 'shm', 'sid1': '101', 'sid2': '259', 'oid': '029', 'aid': '0002506893' } r = requests.get(url,params=get_params) print(r.text) #해당 뉴스기사 데이터 가져오는 것 확인 | cs |
'IT,인터넷 관련 학습 > Python 학습' 카테고리의 다른 글
파이썬(Python) 한글 형태소 분석 : konlpy (3) | 2019.02.25 |
---|---|
파이썬(Python) 업무 자동화 관련 : pyautogui (1) | 2019.02.25 |
파이썬(Python) 웹크롤링 관련 : Beautiful Soup (1) | 2019.02.25 |
아나콘다(Anaconda) 키워드 (1) | 2019.02.25 |
파이썬(Python) 가상환경 (0) | 2019.02.25 |