ใ‚ใกใ‚ƒใใกใ‚ƒ ้–‹็™บ่€…๐Ÿฆพ
์ฝ”๋”ฉ ์ง ๐Ÿ’ช
ใ‚ใกใ‚ƒใใกใ‚ƒ ้–‹็™บ่€…๐Ÿฆพ
  • ์นดํ…Œ๊ณ ๋ฆฌ (135)
    • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ• (12)
      • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (5)
      • DB (0)
      • Node.js (4)
      • ํ˜•์ƒ ๊ด€๋ฆฌ (2)
      • Spring (1)
    • ์›น (11)
      • React (5)
      • ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ__์›น (6)
    • ๋ชจ๋ฐ”์ผ (2)
      • ์•ˆ๋“œ๋กœ์ด๋“œ (2)
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (55)
      • C (13)
      • Python (15)
      • SQL (5)
      • Java (22)
    • ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท (11)
      • ์•„๋‘์ด๋…ธ (11)
    • ์ผ์ƒ (31)
      • ๋ง›์ง‘ (13)
      • ๋žญํ‚น๋‹ญ์ปด (4)
      • ํ›„๊ธฐ (11)
      • ์š”๋ฆฌ (3)
      • ์žก๋‹ด (0)
    • ๊ต์–‘ (4)
      • ์‹ฌ๋ฆฌํ•™ (3)
      • ํ…Œ๋‹ˆ์Šค (1)
    • ์ž๊ฒฉ์ฆ (9)
      • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (9)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿ’ป github

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
ใ‚ใกใ‚ƒใใกใ‚ƒ ้–‹็™บ่€…๐Ÿฆพ

์ฝ”๋”ฉ ์ง ๐Ÿ’ช

[Python] ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ํ™œ์šฉ (2)
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/Python

[Python] ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ํ™œ์šฉ (2)

2022. 4. 21. 01:48

[๊ณต๊ณต๋ฐ์ดํ„ฐ ํฌํ„ธ API๋ฅผ ํ™œ์šฉํ•œ ์›น ํฌ๋กค๋ง]

 

ใ€Š API ์ค€๋น„ ใ€‹

 

โ‘  ๊ณต๊ณต๋ฐ์ดํ„ฐ ํฌํ„ธ(https://www.data.go.kr/)์— ์ ‘์†ํ•˜์—ฌ ํšŒ์›๊ฐ€์ž…์„ ํ•œ๋‹ค.

 

โ‘ก ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ํ‚ค์›Œ๋“œ๋ฅผ ๊ฒ€์ƒ‰ ํ›„ ์˜คํ”ˆ API ํ™œ์šฉ์„ ์‹ ์ฒญํ•œ๋‹ค.

 

โ‘ข ํ™œ์šฉ๋ชฉ์  ๋ฐ ์ƒ์„ธ๊ธฐ๋Šฅ์ •๋ณด๋ฅผ ์„ ํƒ ํ›„ ํ™œ์šฉ ์Šน์ธ์ด ๋˜๋ฉด ๋งˆ์ดํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ์ธ์ฆํ‚ค / ์„œ๋น„์Šค URL ํ™•์ธ ๊ฐ€๋Šฅ

โ‘ฃ ์ƒ์„ธ์ •๋ณด ๋ฐ ํ™œ์šฉ๊ฐ€์ด๋“œ.doc๋ฅผ ํ†ตํ•ด ์š”์ฒญ๋ณ€์ˆ˜, ์ถœ๋ ฅ ๊ฒฐ๊ณผ ๋ฐ ๋‹ค์–‘ํ•œ ์ •๋ณด ๋“ฑ์„ ํ™•์ธ ๊ฐ€๋Šฅ

 

ใ€Š ์ฝ”๋“œ ์ž‘์„ฑ ใ€‹

 

[ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ˆœ์„œ]

โ‘  main()
โ‘ก getTourismStateService()
โ‘ข getTourismStateItem()
โ‘ฃ getRequestUrl()

 

[๋ชจ๋“ˆ ์„ ์–ธ๋ถ€]

import requests       # requests ๋ชจ๋“ˆ : http / https ์›น์— ์š”์ฒญ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
import urllib.request # urllib.request ๋ชจ๋“ˆ : URL์ด๋‚˜ HTTP๋ฅผ ์—ฌ๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š” ํ•จ์ˆ˜์™€ ํด๋ž˜์Šค ์ œ๊ณต
import json           # JSON ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ชจ๋“ˆ
import pandas as pd   # ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด์„ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ํ™” ์‹œํ‚ค๊ณ  csv ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ
import datetime       # ํ˜„์žฌ ๋‚ ์งœ/์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ธ datetime.datetime.now() ํ•จ์ˆ˜ ์‚ฌ์šฉ

 

[ โ‘  main() ]

def main():
    result = []
    natName = ''
    print("ใ€Š ๊ตญ๋‚ด ์ž…๊ตญ ์™ธ๊ตญ์ธ์˜ ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ใ€‹")
    nat_cd = input("๊ตญ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” (์ค‘๊ตญ: 112 / ์ผ๋ณธ: 130 / ๋ฏธ๊ตญ 275) :   ")
    nStartYear = int(input("๋ฐ์ดํ„ฐ๋ฅผ ๋ช‡ ๋…„๋ถ€ํ„ฐ ์ˆ˜์ง‘ํ• ๊นŒ์š”? :   "))
    nEndYear = int(input("๋ฐ์ดํ„ฐ๋ฅผ ๋ช‡ ๋…„๊นŒ์ง€ ์ˆ˜์ง‘ํ• ๊นŒ์š”? :   "))
    ed_cd = "E"  #  E: ๋ฐฉํ•œ ์ž…๊ตญ ์™ธ๊ตญ์ธ, D : ํ•ด์™ธ ์ถœ๊ตญ ์™ธ๊ตญ์ธ

    result, natName, ed, dataEND = getTourismStateService(nat_cd, ed_cd, nStartYear, nEndYear)

    if(natName == ''): # URL ์š”์ฒญ์€ ์„ฑ๊ณตํ•˜์˜€์œผ๋‚˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์— ์‹คํŒจํ•œ ๊ฒฝ์šฐ
        print("๋ฐ์ดํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ณต๊ณต๋ฐ์ดํ„ฐํฌํ„ธ ์„œ๋น„์Šค ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค")
    else:
        # csvํ˜•ํƒœ๋กœ ํŒŒ์ผ ์ €์žฅ
        columns = ["์ž…๊ตญ ๊ตญ๊ฐ€", "๊ตญ๊ฐ€ ์ฝ”๋“œ", "์ž…๊ตญ ์—ฐ์›”", "์ž…๊ตญ์ž ์ˆ˜"]
        result_df = pd.DataFrame(result, columns = columns) # pandas ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ํ˜•๋ณ€ํ™˜
        result_df.to_csv("./%s_%s_%d_%s.csv"%(natName,ed, nStartYear, dataEND),
                         index=False, encoding="cp949")

 

[ โ‘ก getTourismStateService() ]

# getTourismStateService(๊ตญ๊ฐ€ ์ฝ”๋“œ, ์ถœ/์ž…๊ตญ ์—ฌ๋ถ€, ์‹œ์ž‘์ผ์ž, ์ข…๋ฃŒ์ผ์ž) : ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ(์›” ๋‹จ์œ„ ํฌ๋งทํŒ…)
# ์ฝ˜์†”์— getTourismStateItem()์„ ํ†ตํ•ด ์ „๋‹ฌ๋ฐ›์€ Json ๋ฐ์ดํ„ฐ ๋ฌธ์ž์—ด ๋ณ€ํ™˜ ์ถœ๋ ฅ,
# ๊ตญ๊ฐ€๋ช…/์ฝ”๋“œ, ์—ฐ๋„, ๋ฐฉ๋ฌธ๊ฐ ์ˆ˜๊ฐ€ ์ €์žฅ๋œ result ๋ฐฐ์—ด, ๊ตญ๊ฐ€๋ช…, ์ถœ/์ž…๊ตญ ์—ฌ๋ถ€, ๋ฐ์ดํ„ฐ์˜ ๋ ๋ฒ”์œ„ ๋ฐ˜ํ™˜
def getTourismStateService(nat_cd, ed_cd, nStartYear, nEndYear):
    result = []
    natName = ''
    # format() ํ•จ์ˆ˜ ์‚ฌ์šฉ dataEND ๊ฐ’์˜ ๋ฒ”์œ„ ์ง€์ •
    # {0}{1:0>2} -> ์ฒซ๋ฒˆ์งธ {0}๋Š” {"nEndYear"}, ๋‘๋ฒˆ์จฐ {1:0>2}๋Š” {"12"}
    # ์ด๋–„ {1:0>2} ๋Š” ๋นˆ ๊ณต๊ฐ„์„ 0์œผ๋กœ์ฑ„์šฐ๊ณ  ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ์ด๋ผ๋Š” ์˜๋ฏธ
    dataEND = "{0}{1:0>2}".format(str(nEndYear), str(12)) # ๋ฐ์ดํ„ฐ ๋ ๋ฒ”์œ„ ์ดˆ๊ธฐํ™”
    isDataEnd = 0 # ๋ฐ์ดํ„ฐ ๋ ํ™•์ธ์šฉ flag ์ดˆ๊ธฐํ™”

    for year in range(nStartYear, nEndYear + 1):
        for month in range(1, 13):
            if(isDataEnd == 1): # dateEnd๊ฐ€ ์ฐธ์ผ๊ฒฝ์šฐ break (๋ฐ์ดํ„ฐ์˜ ๋์„ ๋งŒ๋‚œ ๊ฒฝ์šฐ)
                break
            yyyymm = "{0}{1:0>2}".format(str(year), str(month))
            # getTourismStateItem() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฐ›์€ json ๊ฐ์ฒด ์ •๋ณด ์ €์žฅ
            jsonData = getTourismStateItem(yyyymm, nat_cd, ed_cd)

            # jsonData ์žฌ๊ฒ€์ฆ json ๊ฐ์ฒด์˜ response.header.resultMSg == OK ์ธ๊ฒฝ์šฐ(์ •์ƒ ์ „๋‹ฌ์ธ ๊ฒฝ์šฐ)
            if(jsonData["response"]["header"]["resultMsg"] == "OK"):
                # ์ž…๋ ฅ๋œ ๋ฒ”์œ„๊นŒ์ง€ ์ˆ˜์ง‘ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ, ๋” ์ด์ƒ ์ œ๊ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์ผ ๊ฒฝ์šฐ
                if(jsonData["response"]["body"]["items"] == ""):
                    isDataEnd = 1 # isDataEnd ์ฐธ์œผ๋กœ ์„ค์ •
                    dataEND = "{0}{1:0>2}".format(str(year), str(month-1))
                    print("๋ฐ์ดํ„ฐ ์—†์Œ....\n ์ œ๊ณต๋˜๋Š” ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ๋Š” %s๋…„ %s์›”๊นŒ์ง€์ž…๋‹ˆ๋‹ค."%(str(year), str(month -1)))
                    break

                # jsonData๋ฅผ JSON ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅ
                # json.dumps(object, indent(๋“ค์—ฌ์“ฐ๊ธฐ ๋ฒ”์œ„ ์ง€์ •), sort_keys(์ •๋ ฌ ์œ ๋ฌด), ensure_ascii=False(๋ฌธ์ž ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ))
                print(json.dumps(jsonData, indent=4, sort_keys=True, ensure_ascii=False))
                natName = jsonData["response"]["body"]["items"]["item"]["natKorNm"]
                natName = natName.replace(' ', '') # replace()๋ฅผ ํ†ตํ•ด ๊ณต๋ฐฑ ์ œ๊ฑฐ
                num = jsonData["response"]["body"]["items"]["item"]["num"] # ๋ฐฉ๋ฌธ๊ฐ ์ˆ˜
                ed = jsonData["response"]["body"]["items"]["item"]["ed"] # ์ถœ/์ž…๊ตญ ์—ฌ๋ถ€
                print("[ %s_%s : %s ]" %(natName, yyyymm, num))
                print("-----------------------------------------------------------")
                # result ๋ฐฐ์—ด์— ๊ตญ๊ฐ€๋ช…, ๊ตญ๊ฐ€์ฝ”๋“œ, ์—ฐ๋„, ๋ฐฉ๋ฌธ๊ฐ ์ˆ˜ ์ €์žฅ
                result.append([natName, nat_cd, yyyymm, num])
    # result๋ฐฐ์—ด, ๊ตญ๊ฐ€๋ช…, ์ถœ/์ž…๊ตญ ์—ฌ๋ถ€, ๋ฐ์ดํ„ฐ์˜ ๋ ๋ฒ”์œ„ ๋ฐ˜ํ™˜
    return(result, natName, ed, dataEND)

 

[ โ‘ข getTourismStateItem() ]

# getTourismStateItem(๊ธฐ์ค€์—ฐ๋„, ๊ตญ๊ฐ€์ฝ”๋“œ, ์ถœ/์ž…๊ตญ ์—ฌ๋ถ€) : ์ „๋‹ฌ๋ฐ›์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด url ์ƒ์„ฑ ํ›„
#                                                    getRequestUrl() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฐ›์€ json ๊ฐ์ฒด ๋ฐ˜ํ™˜
def getTourismStateItem(yyyymm, national_cd, ed_cd):
    # API ์ผ๋ฐ˜ ์ธ์ฆํ‚ค(Encoding)
    ServiceKey = 'SkDEhhMCcC0eh%2BRvAs9gCyxU2UQG%2BIEpQ9Elj8qQ7bF6aVfRFgjFHWly2r%2F2RtnFV%2BkSQ6O6woik9%2B%2B8cTEioA%3D%3D'
    # ์„œ๋น„์Šค url
    service_url = 'http://openapi.tour.go.kr/openapi/service/EdrcntTourismStatsService/getEdrcntTourismStatsList'
    parameters = f'?_type=json&serviceKey={ServiceKey}&YM={yyyymm}&NAT_CD={national_cd}&ED_CD={ed_cd}'
    # url์— service_url + ๊ฐœ์ธ ์ธ์ฆํ‚ค + ์–ป๊ณ ์ž ํ•˜๋Š” ์ •๋ณด์˜ ๋ฒ”์œ„ ์ž…๋ ฅ
    # f`http://openapi.tour.go.kr/openapi/service/EdrcntTourismStatsService/getEdrcntTourismStatsList
    # ?_type=json&serviceKey=${serviceKey}&YM=${yyyymm}&NAT_CD=${national_cd}&ED_CD={ed+cd}`
    url = service_url + parameters

    retData = getRequestUrl(url) # getRequestUrl() ํ•จ์ˆ˜ ํ˜ธ์ถœ
    if (retData == None):
        return None
    else:
        return json.loads(retData)

 

[ โ‘ฃ getRequestUrl() ]

# getRequestUrl(url) : ์ „๋‹ฌ๋ฐ›์€ url์„ ํ†ตํ•ด json ํ˜•ํƒœ์˜ ์‘๋‹ต ๊ฐ์ฒด ๋ฐ˜ํ™˜
def getRequestUrl(url):
    # urllib.request.Request() : ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋–„ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ณด๋ƒ„. ์—†๋Š” ํŽ˜์ด์ง€ ์š”์ฒญ์‹œ ์—๋Ÿฌ
    req = urllib.request.Request(url)

    try:
        response = urllib.request.urlopen(req)		# ์ „๋‹ฌํ•œ url์„ ํ†ตํ•ด ๋ฐ˜ํ™˜๋œ ๋ฐ์ดํ„ฐ ์ •๋ณด ์ €์žฅ
        if response.getcode()==200:					# code==200์ธ ๊ฒฝ์šฐ : ์ •์ƒ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฐ›์€ ๊ฒฝ์šฐ
            print("[%s] Url Request Success" %datetime.datetime.now())
            return response.read().decode('utf-8')	# 'utf-8' ํ˜•์‹์œผ๋กœ ๋””์ฝ”๋”ฉํ•œ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜
    except Exception as e:							# ์—๋Ÿฌ ์ถœ๋ ฅ ๊ตฌ๋ฌธ
        print(e)
        print("[%s] Error for URL : %s" %(datetime.datetime.now(), url))
        return None

 

 

ใ€Š ์ตœ์ข… ํ˜•ํƒœ์˜ ์ฝ”๋“œ ใ€‹

import requests       # requests ๋ชจ๋“ˆ : http / https ์›น์— ์š”์ฒญ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
import urllib.request # urllib.request ๋ชจ๋“ˆ : URL์ด๋‚˜ HTTP๋ฅผ ์—ฌ๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š” ํ•จ์ˆ˜์™€ ํด๋ž˜์Šค ์ œ๊ณต
import json           # JSON ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ชจ๋“ˆ
import pandas as pd   # ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด์„ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ํ™” ์‹œํ‚ค๊ณ  csv ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ
import datetime       # ํ˜„์žฌ ๋‚ ์งœ/์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ธ datetime.datetime.now() ํ•จ์ˆ˜ ์‚ฌ์šฉ


def getTourismStateService(nat_cd, ed_cd, nStartYear, nEndYear):
    result = []
    natName = ''
    dataEND = "{0}{1:0>2}".format(str(nEndYear), str(12)) 
    isDataEnd = 0
    
    for year in range(nStartYear, nEndYear + 1):
        for month in range(1, 13):
            if(isDataEnd == 1): 
                break
            yyyymm = "{0}{1:0>2}".format(str(year), str(month))
            jsonData = getTourismStateItem(yyyymm, nat_cd, ed_cd)

            if(jsonData["response"]["header"]["resultMsg"] == "OK"):
                if(jsonData["response"]["body"]["items"] == ""):
                    isDataEnd = 1
                    dataEND = "{0}{1:0>2}".format(str(year), str(month-1))
                    print("๋ฐ์ดํ„ฐ ์—†์Œ....\n ์ œ๊ณต๋˜๋Š” ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ๋Š” %s๋…„ %s์›”๊นŒ์ง€์ž…๋‹ˆ๋‹ค."%(str(year), str(month -1)))
                    break

                print(json.dumps(jsonData, indent=4, sort_keys=True, ensure_ascii=False))
                natName = jsonData["response"]["body"]["items"]["item"]["natKorNm"]
                natName = natName.replace(' ', '') 
                num = jsonData["response"]["body"]["items"]["item"]["num"] 
                ed = jsonData["response"]["body"]["items"]["item"]["ed"]
                print("[ %s_%s : %s ]" %(natName, yyyymm, num))
                print("-----------------------------------------------------------")
                result.append([natName, nat_cd, yyyymm, num])
                
    return(result, natName, ed, dataEND)



def getTourismStateItem(yyyymm, national_cd, ed_cd):
    ServiceKey = 'Input Your Encoding key'
    service_url = 'http://openapi.tour.go.kr/openapi/service/EdrcntTourismStatsService/getEdrcntTourismStatsList'
    parameters = f'?_type=json&serviceKey={ServiceKey}&YM={yyyymm}&NAT_CD={national_cd}&ED_CD={ed_cd}'
    url = service_url + parameters
    retData = getRequestUrl(url)
    
    if (retData == None):
        return None
    else:
        return json.loads(retData)



def getRequestUrl(url):
    req = urllib.request.Request(url)

    try:
        response = urllib.request.urlopen(req)
        if response.getcode()==200: 
            print("[%s] Url Request Success" %datetime.datetime.now())
            return response.read().decode('utf-8') 
    except Exception as e:  
        print(e)
        print("[%s] Error for URL : %s" %(datetime.datetime.now(), url))
        return None



def main():
    result = []
    natName = ''
    print("ใ€Š ๊ตญ๋‚ด ์ž…๊ตญ ์™ธ๊ตญ์ธ์˜ ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ใ€‹")
    nat_cd = input("๊ตญ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” (์ค‘๊ตญ: 112 / ์ผ๋ณธ: 130 / ๋ฏธ๊ตญ 275) :   ")
    nStartYear = int(input("๋ฐ์ดํ„ฐ๋ฅผ ๋ช‡ ๋…„๋ถ€ํ„ฐ ์ˆ˜์ง‘ํ• ๊นŒ์š”? :   "))
    nEndYear = int(input("๋ฐ์ดํ„ฐ๋ฅผ ๋ช‡ ๋…„๊นŒ์ง€ ์ˆ˜์ง‘ํ• ๊นŒ์š”? :   "))
    ed_cd = "E" 

    result, natName, ed, dataEND = getTourismStateService(nat_cd, ed_cd, nStartYear, nEndYear)

    if(natName == ''):
        print("๋ฐ์ดํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ณต๊ณต๋ฐ์ดํ„ฐํฌํ„ธ ์„œ๋น„์Šค ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค")
    else:
        columns = ["์ž…๊ตญ ๊ตญ๊ฐ€", "๊ตญ๊ฐ€ ์ฝ”๋“œ", "์ž…๊ตญ ์—ฐ์›”", "์ž…๊ตญ์ž ์ˆ˜"]
        result_df = pd.DataFrame(result, columns = columns)
        result_df.to_csv("./%s_%s_%d_%s.csv"%(natName,ed, nStartYear, dataEND),
                         index=False, encoding="cp949")



if __name__ == '__main__':
    main()

 

ใ€Š ์‹คํ–‰ ๊ฒฐ๊ณผ ใ€‹

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    'ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python] ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ์„ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๐Ÿ“ˆ (1)
    • [Python] ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ํ™œ์šฉ (4)
    • [Python] ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ํ™œ์šฉ (3)
    • [Python] ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ํ™œ์šฉ (1)
    ใ‚ใกใ‚ƒใใกใ‚ƒ ้–‹็™บ่€…๐Ÿฆพ
    ใ‚ใกใ‚ƒใใกใ‚ƒ ้–‹็™บ่€…๐Ÿฆพ
    ๐Ÿ‘Š ๋ธ”๋กœ๊ทธ๋„ ๊ทผ์„ฑ์ด๋‹ค? ๐Ÿ‘Š

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”