복붙코딩 1탄. 비오는 날 카톡으로 알려주는 알람 제작 강의

Поделиться
HTML-код
  • Опубликовано: 11 ноя 2024

Комментарии • 13

  • @komulti
    @komulti 2 года назад +1

    간결하고 깔금하고 실용적인 영상 잘 봤습니다. 카톡으로 다른 사람에게 보내는 내용도 기대되네요. ^^

    • @donbboki
      @donbboki  2 года назад

      감사합니다 ^^*

  • @TV-rv7yj
    @TV-rv7yj 2 года назад

    이게빠이썬이네요
    최고

    • @donbboki
      @donbboki  2 года назад

      떡상TV님 감사합니다 !!ㅎ

  • @suhoshin1989
    @suhoshin1989 2 месяца назад

    그리고 저는 # %% 요거 구간 나눠서 실행하는게 아예 되지를 않는데...추가로 뭐 설치해 줘야 할 것이 있을까요?

  • @suhoshin1989
    @suhoshin1989 2 месяца назад

    저도 이거 보고 연습해봤는데 위에 분들이랑 똑같은 에러가 나네요... 서비스키에 넣는 일반인증키(decoding) 문제인것 같습니다. 돈뽀기님이 다른분 답글에 올리신 코드 그대로 복붙하여 실행하니 에러가 안나는데, 제 인증키로 바꾸면 에러가 나네요... 혹시 공공데이터포털 홈페이지에서 그대로 복붙하면 잘 안되는건가 해서 메모장에 복붙한다음 다시 VS코드에 복붙 했는데도 동일합니다.... 왜이럴까요...ㅠㅠ

  • @DoerHan
    @DoerHan 2 года назад +2

    영상 잘 봤습니다.
    다음과 같은 에러가 뜨는데, 어떻게 해결해야할지 모르겠어요.
    --
    C:\Programming>C:/Users/g/AppData/Local/Programs/Python/Python310/python.exe c:/Programming/rainalarm_sendme_base.py
    C:\Programming
    Traceback (most recent call last):
    File "c:\Programming
    ainalarm_sendme_base.py", line 42, in
    data = json.loads(response_body) # json file Load하기
    File "C:\Users\g\AppData\Local\Programs\Python\Python310\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
    File "C:\Users\g\AppData\Local\Programs\Python\Python310\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File "C:\Users\g\AppData\Local\Programs\Python\Python310\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

    • @donbboki
      @donbboki  2 года назад +1

      안녕하세요!
      기상청 api 불러오는 과정에서 오류가 발생한 것 같은데
      일단 인증키 decoding 제대로 들어갔는지 다시 복붙해봐주시고
      1. 일반인증키 decoding을
      “e88Djdkcieka=djskdn” 이런식으로 큰따옴표 안에 적어주셔야 해요
      제가 인증키를 가리려다보니까 에매하게 보여드린 것 같아서 왠지 이것때문인 것 같습니다 ㅠ
      2. 혹시 그래도 안되시면,
      quote_plus(“base_date”) : today
      이부분에서 today를 어제날짜 “20221110”
      으로 바꾸고 다시 돌려봐 주세요
      그래도 안되시면 댓글 한번더 부탁드립니다 !

  • @suk8
    @suk8 Год назад +1

    코드 중간 실행시 이런 에러가 발생합니다.
    c:\Programming
    Output exceeds the size limit. Open the full output data in a text editor
    ---------------------------------------------------------------------------
    JSONDecodeError Traceback (most recent call last)
    c:\Programming
    ainalarm_sendme_base.py in line 41
    40 req = urllib.request.Request(url + unquote(params))
    41 response_body = urlopen(req).read() # URL 읽기
    ---> 42 data = json.loads(response_body) #json file Load하기
    44 # 2. Data 가공 & 추출
    45 df = pd.DataFrame(data['response']['body']['items']['item']) # data에서 필요한 항목 가져오기
    File c:\Users\sukwang2\AppData\Local\Programs\Python\Python310\lib\json\__init__.py:346, in loads(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    341 s = s.decode(detect_encoding(s), 'surrogatepass')
    343 if (cls is None and object_hook is None and
    344 parse_int is None and parse_float is None and
    345 parse_constant is None and object_pairs_hook is None and not kw):
    --> 346 return _default_decoder.decode(s)
    347 if cls is None:
    348 cls = JSONDecoder
    File c:\Users\sukwang2\AppData\Local\Programs\Python\Python310\lib\json\decoder.py:337, in JSONDecoder.decode(self, s, _w)
    332 def decode(self, s, _w=WHITESPACE.match):
    333 """Return the Python representation of ``s`` (a ``str`` instance
    334 containing a JSON document).
    335
    336 """
    --> 337 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    ...
    354 except StopIteration as err:
    --> 355 raise JSONDecodeError("Expecting value", s, err.value) from None
    356 return obj, end
    JSONDecodeError: Expecting value: line 1 column 1 (char 0)

    • @donbboki
      @donbboki  Год назад

      안녕하세요!
      기상청 api 불러오는 과정에서 오류가 발생한 것 같은데
      일단 인증키 decoding 제대로 들어갔는지 다시 복붙해봐주시고
      1. 일반인증키 decoding을
      “e88Djdkcieka=djskdn” 이런식으로 큰따옴표 안에 적어주셔야 해요
      제가 인증키를 가리려다보니까 에매하게 보여드린 것 같아서 왠지 이것때문인 것 같습니다 ㅠ
      그리고,
      quote_plus(“base_date”) : today
      이부분에서 today를 어제날짜 “20221126”
      으로 바꾸고 다시 돌려봐 주세요
      그래도 안되시면 댓글 한번더 부탁드립니다 !

    • @suk8
      @suk8 Год назад

      @@donbboki안녕하세요 decoding 키 정확히 입력했어요.today을 "20221126"으로 수정해도 동일한 에러발생하네요. JSONDecodeError
      인것같은데요. 첫번재는 정상실행되고요. 두번째 #%% 코드 실행시 에러발생합니다.serviceKey 에 "****4JY1w==" 따옴표 안에 정확히 넣어주었는데요.
      어렵네요~~
      Output exceeds the size limit. Open the full output data in a text editor
      ---------------------------------------------------------------------------
      JSONDecodeError Traceback (most recent call last)
      c:\Programming
      ainalarm_sendme_base.py in line 41
      40 req = urllib.request.Request(url + unquote(params))
      41 response_body = urlopen(req).read() # URL 읽기
      ---> 42 data = json.loads(response_body) #json file Load하기
      44 # 2. Data 가공 & 추출
      45 df = pd.DataFrame(data['response']['body']['items']['item']) # data에서 필요한 항목 가져오기
      File c:\Users\sukwang2\AppData\Local\Programs\Python\Python310\lib\json\__init__.py:346, in loads(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
      341 s = s.decode(detect_encoding(s), 'surrogatepass')
      343 if (cls is None and object_hook is None and
      344 parse_int is None and parse_float is None and
      345 parse_constant is None and object_pairs_hook is None and not kw):
      --> 346 return _default_decoder.decode(s)
      347 if cls is None:
      348 cls = JSONDecoder
      File c:\Users\sukwang2\AppData\Local\Programs\Python\Python310\lib\json\decoder.py:337, in JSONDecoder.decode(self, s, _w)
      332 def decode(self, s, _w=WHITESPACE.match):
      333 """Return the Python representation of ``s`` (a ``str`` instance
      334 containing a JSON document).
      335
      336 """
      --> 337 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      ...
      354 except StopIteration as err:
      --> 355 raise JSONDecodeError("Expecting value", s, err.value) from None
      356 return obj, end
      JSONDecodeError: Expecting value: line 1 column 1 (char 0)

    • @donbboki
      @donbboki  Год назад

      @어수광 동일하네요..이거 그대로 붙여서 돌려봐주시겠어요 ?
      # %%
      import requests
      from urllib.request import urlopen
      from urllib.parse import urlencode, unquote, quote_plus
      import urllib
      import requests
      import json
      import pandas as pd
      import datetime
      import os
      print(os.getcwd())
      os.chdir('C://Programming')
      # 1. 기상청 Data 불러오기
      # 기상청_동네 예보 조회 서비스 api 데이터 url 주소, 단기이기때문에 getVilageFcst 사용
      url = 'apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst'
      serviceKey = "eB8zmyr4PrbTUIRDG58hGIbAhFhYD2ABkzrjtygKrwvoy0TuZyYQhNylkmvSxLbs8uEY1JoXNsGFisgsbvPOIw==" # 공공데이터 포털에서 생성된 본인의 서비스 키를 복사 / 붙여넣기
      pageNo = 1
      numOfRows = 500
      dataType = 'json'
      nx = 63
      ny = 128
      today = datetime.datetime.today().strftime("%Y%m%d")
      params = '?' + urlencode({
      quote_plus("serviceKey"): serviceKey, # 인증키
      quote_plus("numOfRows"): numOfRows, # 한 페이지 결과 수 // default : 10
      quote_plus("pageNo"): pageNo, # 페이지 번호 // default : 1
      quote_plus("dataType"): dataType, # 응답자료형식 : XML, JSON
      quote_plus("base_date"): today, # 발표일자 // yyyymmdd
      quote_plus("base_time"): "0500", # 발표시각 // HHMM, 매 시각 40분 이후 호출
      quote_plus("nx"): nx, # 예보지점 X 좌표
      quote_plus("ny"): ny # 예보지점 Y 좌표
      })
      # URL parsing
      req = urllib.request.Request(url + unquote(params))
      response_body = urlopen(req).read() # URL 읽기
      data = json.loads(response_body) #json file Load하기

    • @suk8
      @suk8 Год назад

      @@donbboki 이런 에러가 발생하네요
      ---------------------------------------------------------------------------
      KeyError Traceback (most recent call last)
      c:\Programming
      ainalarm_sendme_base.py in line 42
      40 data = json.loads(response_body) #json file Load하기
      41 # 2. Data 가공 & 추출
      ---> 42 df = pd.DataFrame(data['response']['body']['items']['item']) # data에서 필요한 항목 가져오기
      KeyError: 'body'