request 와 requests 의 차이를 질문드려요.
1062
작성한 질문수 7
저는 강사님께서 알려주신 api 사이트에 들어가 kakao 개발자 사이트에 들어가 api를 받는 것을 과제로 생각하고 숙제를 하였습니다. 막상 혼자하려다보니 api 이용하는것만 꼬박 2틀이 걸린것같습니다. ㅎㅎ 하지만 하다보니 2가지 궁금한것이 있어 질문드립니다.
- 저는 requests의 과제라고 생각이 들어 requests로 api를 받아 내용을 출력해보려고 했지만 되지 않았습니다. (처음은 requset 만으로 '카카오 책 api'로 파이썬 결과를 나오게 한결과구요. 성공했습니다.)
import os
import sys
import io
import urllib.request
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
KakaoAK = "KakaoAK ee8438babc7fb69050ca4ed047a46431"
encText = urllib.parse.quote("파이썬")
url = "https://dapi.kakao.com/v3/search/book?query=" + encText
request = urllib.request.Request(url)
request.add_header("Authorization",KakaoAK)
response = urllib.request.urlopen(request)
rescode = response.getcode()
if(rescode==200):
response_body = response.read()
print(response_body.decode('utf-8'))
else:
print("Error Code:" + rescode)
- 하지만 requests로 하는 코드에선 실행이 되지 않았습니다. 무엇이 문제인지 알 수 없어 질문드립니다.(아무리 생각해도 몰라서 질문드립니다.)
import os
import sys
import io
import urllib.request as req
import requests,json
import urllib.parse as rep
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
KakaoAK = "KakaoAK ee8438babc7fb69050ca4ed047a46431"
base = "https://dapi.kakao.com/v3/search/book?query="
quote = rep.quote_plus("파이썬")
url = base+quote
print('/v3/search/book?query='+quote)
print(type(url))
s= requests.Session() #requests의 세션을 연다
s.add_header("Authorization",KakaoAK) #api의 requsets header정보를 입력한다
'''
paylaod = {"Authorization",KakaoAK}
r = requests.get(url,data=json.dumps(paylaod))
r = requests.get(url,data=paylaod)
print(r.text)
'''
jar = requests.cookies.RequestsCookieJar()
jar.set("Authorization",KakaoAK, domain='dapi.kakao.com',path='/v3/search/book?query='+quote)
r = requests.get('http://httpbin.org/cookies',cookies=jar)
print(r.text)
정확히 requests로 header 데이터( 즉 위의 request.add_header("Authorization",KakaoAK))와 비슷한 것을 보내는 것을 몰라서 이러한 문제가 계속생기는것같은데 정확히는 모르겠습니다.
다양한 시도를 해봤는데도 잘 되지 않습니다.
답변 1
0
카카오 api는 제가 최근에 사용하지 않아서 모르겠지만,
소스코드 상에서 보면 카카오에서 요구하는 header 정보가 일치하지 않아 나오는 문제 같습니다.
정확한 레퍼런스를 참고하셔서 사용하셔야 될 것같습니다.
request, requests 의 차이는 urllib2, urllib3 차이로 파이썬 버전과 상관이 있습니다.
자세한 것은 아래 링크를 드립니다.(번역해서 읽으셔도 무방합니다.)
감사합니다.
현재 예제에서 error 발생
0
367
3
유튜브 동영상 다운로드
0
1448
2
Atom 에디터 관련
0
337
1
위시켓 폼데이터
0
274
1
스케줄러 사용 관련 질문 드립니다
0
627
1
selenium 에러
0
428
1
Progress bar 쓰레드 관련
0
489
1
Install Package 관련 문의
0
328
1
tkinter 샘플 코드 실행 오류 건
0
1267
1
4-7-6 네이버 & 카카오 주식 정보 가져오기
0
381
1
네이버자동로그인_by_selenium
0
876
1
위시캣 로그인 처리 및 크롤링 질문
0
345
1
2-8-1 네이버이미지 크롤링 질문
1
604
3
li:nth-of-type 질문
0
350
2
에러가 뜨는데 잘 모르겠어요ㅠ
0
401
2
Install Packages 항목이 안보이는 이유가 뭘까요?
0
401
2
환경변수 Path 설정 방법
0
631
1
웹 브라우저 없는 스크랩핑 및 파싱 실습(1) - 인프런
0
333
1
웹 브라우저 없는 스크랩핑 및 파싱 실습(1) -git주소
0
477
3
download2-8-1. py질문
0
203
1
ip 차단 당하는 거 같은데 아무리 랜덤주고, sleep 줘도 안 되는데 다른 방법 더 있을까요??
0
645
1
인프런 환경이 바뀌어서 제나름대로 하는데
0
196
1
다시올려주신 예제파일로하는데
0
190
1
아직도 에러가뜨나보네요?
0
584
1





