inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기

requests 모듈 기초(2)

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

1062

명한민

작성한 질문수 7

0

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

  1. 저는 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)

  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))와 비슷한 것을 보내는 것을 몰라서 이러한 문제가 계속생기는것같은데 정확히는 모르겠습니다.

다양한 시도를 해봤는데도 잘 되지 않습니다.

웹-크롤링 python

답변 1

0

좋은사람

카카오 api는 제가 최근에 사용하지 않아서 모르겠지만,

소스코드 상에서 보면 카카오에서 요구하는 header 정보가 일치하지 않아 나오는 문제 같습니다.

정확한 레퍼런스를 참고하셔서 사용하셔야 될 것같습니다.

request, requests 의 차이는 urllib2, urllib3 차이로 파이썬 버전과 상관이 있습니다.

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

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

감사합니다.

현재 예제에서 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