• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

request 와 requests 의 차이를 질문드려요.

19.02.20 17:19 작성 조회수 764

0

저는 강사님께서 알려주신 api 사이트에 들어가 kakao 개발자 사이트에 들어가 api를 받는 것을 과제로 생각하고 숙제를 하였습니다. 막상 혼자하려다보니 api 이용하는것만 꼬박 2틀이 걸린것같습니다. ㅎㅎ 하지만 하다보니 2가지 궁금한것이 있어 질문드립니다.

  1. 저는 requests의 과제라고 생각이 들어 requests로 api를 받아 내용을 출력해보려고 했지만 되지 않았습니다. (처음은 requset 만으로 '카카오 책 api'로 파이썬 결과를 나오게 한결과구요. 성공했습니다.)
  2. 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)

  1. 하지만 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 차이로 파이썬 버전과 상관이 있습니다.

자세한 것은 아래 링크를 드립니다.(번역해서 읽으셔도 무방합니다.)

https://stackoverflow.com/questions/2018026/what-are-the-differences-between-the-urllib-urllib2-and-requests-module

감사합니다.