• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

오타는 없는데 터미널에서 오류가 납니다.

20.10.13 18:15 작성 조회수 966

0

터미널에 나타난 오류를 그대로 복사했습니다.

Microsoft Windows [Version 10.0.18363.1082]

(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\임채준\marketing-master>C:/ProgramData/Anaconda3/Scripts/activate

(base) C:\Users\임채준\marketing-master>conda activate base

(base) C:\Users\임채준\marketing-master>C:/ProgramData/Anaconda3/python.exe c:/Users/임채준/marketing-master/api/blogshopCount.py

Traceback (most recent call last):

  File "c:/Users/임채준/marketing-master/api/blogshopCount.py", line 36, in <module>

    blogsTotal = getSearchCount(relKeyword, NAVER_BLOG_API_URL)

  File "c:/Users/임채준/marketing-master/api/blogshopCount.py", line 18, in getSearchCount

    response = urllib.request.urlopen(request)

  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 222, in urlopen

    return opener.open(url, data, timeout)

  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 531, in open

    response = meth(req, response)

  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 640, in http_response

    response = self.parent.error(

  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 569, in error

    return self._call_chain(*args)

  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 502, in _call_chain

    result = func(*args)

  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 649, in http_error_default

    raise HTTPError(req.full_url, code, msg, hdrs, fp)

urllib.error.HTTPError: HTTP Error 400: Bad Request

아마 환경변수를 바꿔줘야하는것 같은데 어떻게 해야하나요?

답변 12

·

답변을 작성해보세요.

0

timmy759님의 프로필

timmy759

질문자

2020.10.13

해결했습니다 너무 감사합니다!

문제는 여기에 있었습니다.

request.add_header("X-Naver-Client-Id",client_id)
    request.add_header("X-Naver-Client-Secret",client_secret)
"X-Naver-Client Sercet"로 되있어서 설마해서 고쳤더니 되었습니다
그런데 문득 득 생각인데 X-Naver-Client Sercet 이게
무슨역할을 하는지 알수있을까요??

0

timmy759님의 프로필

timmy759

질문자

2020.10.13

4가지 다 확인했습니다..

혹시 client_id 랑 client_secret 값 사이에 ' ' 넣는거 맞지않을까요? 모자이크되서 값사이에 ' ' 넣긴넣었습니다만

0

안녕하세요?

원인에 하나씩 접근하는 것 같습니다.

고쳐서 입력하신 URL이 맞고 401에러는 네이버 오픈API에러에 보면 인증실패로 나옵니다.

검색에서 '네이버 오픈AP 에러 목록'이라는 문서를 보면 401 인증에러에 대처하는 방법 4가지가 나옵니다. 제가 모바일앱으로 답변하다보니 주소를 붙여넣기 못하는데 검색하면 나올 겁니다. 모두 네이버 API설정 관련 내용입니다.

이 부분만 해결하시면 잘 동작할 것으로 기대합니다.

감사합니다.

0

timmy759님의 프로필

timmy759

질문자

2020.10.13

urllib.error.HTTPError: HTTP Error 401: Unauthorized

강의카메라가 밑에는 잘안보여서 정말 불편했는데 다시보니깐

?query=가 맞더라구요 그래서 두개다 바꿔줬는데 이런오류가 뜹니다.!

urllib.error.HTTPError: HTTP Error 401: Unauthorized

0

timmy759님의 프로필

timmy759

질문자

2020.10.13

cliend_id랑 client_secret 는 정확하게 입력했습니다.

그런데 NAVER_BLOG_API_URL 랑 NAVER_SHOP_API_URL는 저는 https://openapi.naver.com/v1/search/blog.json 이거인데 선생님은 'https://openapi.naver.com/v1/search/blog?query=' 이셔서 바꿔서해봤는데 오류코드가 401로 바껴서 뜹니다!

0

안녕하세요?

마침 작업을 하고 있어 바로 답변을 드립니다.

제가 http응답코드를 보고 플라스크 작업까지 다 하신 것으로 오해했네요. 

그렇다면 네이버API에서 400에러를 보내 준 것인데 이럴 경우는 대부분 api key가 잘못된 경우가 많습니다. 본인의 네이버 API key는 정상적으로 발급받으신 것인지 다른 네이버 API호출은 잘 되는지 확인하고 알려주시겠어요? 네이버 open api 설정하는 강의 부분을 비교해 보시면 도움이 될겁니다.

감사합니다.

0

timmy759님의 프로필

timmy759

질문자

2020.10.13

정말 빠른답변 감사합니다!! 그런데 선생님 아직 플라스크 강의까지 안가고 네이버 Open API 블로그 쇼핑정보 수집 강의에서

def getSearchCount(keywordURL):
    encText = urllib.parse.quote(keyword)
    url = URL + encText
    request = urllib.request.Request(url)
    request.add_header("X-Naver-Client-Id",client_id)
    request.add_header("X-Naver-Client-Seret",client_secret)
    response = urllib.request.urlopen(request)
    rescode = response.getcode()
    response_body = response.read()
    jsonString = response_body.decode('utf-8')
    jsonDict = json.loads(jsonString)
    items = jsonDict['items']

    for item in items:
        title = item['title']
        link = item['link']
        print('Title: ', title, ' Link : ', link)

    if(rescode == 200):
        totalCount = jsonDict['total']
    else:
        totalCount = 0
    return totalCount
이 코드를 추가하니깐 오류가 납니다.

0

처음부터 들으실 필요는 없고 지금 에러나는 부분과 플라스크를 실행하는 부분만 들으시면 됩니다.

0

timmy759님의 프로필

timmy759

질문자

2020.10.13

지금 marketing 강의를 다시 처음부터 보면된다는 말씀인거시죠?!

0

안녕하세요?

구글이나 네이버에서 '윈도우 명령 프롬프트'라고 검색해 보시면 검은창에 명령어를 입력하는 터미널이 있습니다.

이 명령창에 강의에 맥으로 실행한 내용데로 파이썬 프로그램 명령으로 플라스크를 실행해야 합니다. 원도우에서도 기본적으로 명령은 같습니다.

그리고 강의에 나온데로 크롬같은 웹브라우저 주소창에 url을 입력하시오. 그리고 실행되는지 확인하시면 됩니다.

제가 글로 설명하는 것보다 해당 강의부분을 다시 보시면 도움이 될 것 같네요.

혹시 안되는 부분이 있으면 다시 알려주세요.

감사합니다.

0

timmy759님의 프로필

timmy759

질문자

2020.10.13

안녕하십니까..어떤식으로 확인을 해야하는지 이렇게 답변을 해주신다면 해결을 못할거같습니다..ㅜㅜ제가 보기엔 인터프린터문제같은데 혹시나 강의에서는 맥이라고 커맨더 시프트 + @라고하셨는데 저는 윈도우라서 설명이 부족합니다..커맨더가 무엇인지 조금더 상세하게 부탁드리겠습니다..

0

안녕하세요?

에러가 400으로 뜨는 것을 보면 프로그램 문법의 문제보다는  해당 플라스크 서비스가 작동하지 않는 것으로 의심됩니다.

다시 한번 확인해 보시기 바랍니다.

감사합니다.