인프런 커뮤니티 질문&답변

wooseong yang님의 프로필 이미지
wooseong yang

작성한 질문수

남박사의 파이썬 기초부터 실전 100% 활용

핫딜이 뜨면 카톡으로 알려주는 프로그램 만들기

2020 6월 14일 질문

작성

·

602

2

안녕하세요! 강의 항상 잘 듣구 있습니다

크롤러 관련 질문을 하려니 요지를 짚어서 질문 하는것도 좀 가다롭네요 ㅠㅠ

먼저 카카오 개발자 센터에서 애플리케이션을 생성했고

개인정보 보호항목의  프로필정보 동의를 했고

접근권한의 관리항목중 카카오톡 메세지 전송 권한까지 동의 했습니다 그후 바뀐 Rest api개발 항목에서 테스트 코드를 작성해 강의와 동일한 코드를 작성했고

access token 도 동일한 권한으로 발급받아 진행했지만

{"msg":"access token should not be null or empty","code":-2}

-2에러코드만 계속해서 발생합니다 토큰을 제대로 기입까지 했는데도 말입니다 혼자서 나름 해결책을 찾으려고 강구해봤지만

도저히 해결이 안되니 답답해서 질문 드립니다! 아래는 코드입니다

import requests
from bs4 import BeautifulSoup
import json


KAKAO_TOKEN="WVDoVQilFDE-TzxCbChnF0p8X5-PLA8JmLxrDAo9dJcAAAFyssW9Xw"

header = {"Authorization" : "Bearer" + KAKAO_TOKEN}
url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
post={
    "object_type""text",
        "text""연습메시지",
        "link": {
            "web_url""https://developers.kakao.com",
            "mobile_web_url""https://developers.kakao.com"
        },
        "button_title""바로 확인"
}
data = {"template_object" : json.dumps(post)}

r = requests.post(url,headers=header,data=data)
print(r.text)

def hotdeal(keyword):
    url = "https://slickdeals.net/newsearch.php?src=SearchBarV2&q={}&searcharea=deals&searchin=first&pp=20".format(keyword)

    r = requests.get(url)
    bs = BeautifulSoup(r.text,"lxml")
    rows = bs.select("div.resultRow")

    result=[]
    for r in rows:
        link=r.select("a.dealTitle")[0]
        href=link.get("href")
        if href is None:
            continue
        href = "https://slickdeals.net/" + href
        title = link.text
        price = r.select("span.price")[0].text.replace("$","").replace("from","").strip()
        if price.find("/")>=0 or price == "":
            continue
        price = float(price)
        hot = len(r.select("span.icon-fire"))
        result.append((title,href,price,hot))
    return result
#print(hotdeal("ipad"))

답변 3

1

남박사님의 프로필 이미지
남박사
지식공유자

이런 오류가 알고나면 별거 아닌데 참 시간을 많이 소비하게 되는 오류중 하나입니다.

카카오개발자 페이지 공식 메뉴얼에 보시면 로그인 예제가 나오는데 Authorization 키의 값으로 Bearer {access_token} 을 넘겨주게 되어있습니다. 그러나 작성하신 코드를 보면

KAKAO_TOKEN="WVDoVQilFDE-TzxCbChnF0p8X5-PLA8JmLxrDAo9dJcAAAFyssW9Xw"

header = {"Authorization" : "Bearer" + KAKAO_TOKEN}

위 처럼 되어있는데.. 이걸 프린트 해보면

{'Authorization': 'BearerWVDoVQilFDE-TzxCbChnF0p8X5-PLA8JmLxrDAo9dJcAAAFyssW9Xw'}

위처럼 나옵니다.

header = {"Authorization" : "Bearer" + KAKAO_TOKEN}     // 오류

header = {"Authorization" : "Bearer  " + KAKAO_TOKEN}    // 정상

위처럼 Bearer 다음 한칸을 띄워주셔야

{'Authorization': 'Bearer WVDoVQilFDE-TzxCbChnF0p8X5-PLA8JmLxrDAo9dJcAAAFyssW9Xw'}

위처럼 요구 조건을 만족하게 됩니다.

0

wooseong yang님의 프로필 이미지
wooseong yang
질문자

와 공백 때문에 결과가 출력이 안되던 거였군요 ,, 이런 ㅠ

0

wooseong yang님의 프로필 이미지
wooseong yang
질문자

아,,,, ㅠㅠㅠㅠㅠㅠㅠㅠㅠ 제가 아직 갈길이 멀었군요 

친절하게 알려주셔서 감사합니다 재작성해보도록 하겠습니다

wooseong yang님의 프로필 이미지
wooseong yang

작성한 질문수

질문하기