-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
request 와 requests 의 차이를 질문드려요.
19.02.20 17:19 작성 조회수 764
0
저는 강사님께서 알려주신 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))와 비슷한 것을 보내는 것을 몰라서 이러한 문제가 계속생기는것같은데 정확히는 모르겠습니다.
다양한 시도를 해봤는데도 잘 되지 않습니다.
답변을 작성해보세요.
0
좋은사람
지식공유자2019.02.21
카카오 api는 제가 최근에 사용하지 않아서 모르겠지만,
소스코드 상에서 보면 카카오에서 요구하는 header 정보가 일치하지 않아 나오는 문제 같습니다.
정확한 레퍼런스를 참고하셔서 사용하셔야 될 것같습니다.
request, requests 의 차이는 urllib2, urllib3 차이로 파이썬 버전과 상관이 있습니다.
자세한 것은 아래 링크를 드립니다.(번역해서 읽으셔도 무방합니다.)
감사합니다.
답변 1