#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http 제목책에서 크롤링 예제를 그대로 따라해봤는데 오류가 생깁니다..2022-04-15 21:57작성자하나#2020년부터 지금까지 우리나라에 입국한 외국인 수 구하기import osimport sysimport urllib.requestimport datetimeimport timeimport jsonimport pandas as pdServiceKey = 'Yd1KzUHqtkeLw1sfuF4Nz41O5z3%2FdSwgvm2upCXhdYoHl5o7gQhHW%2FTkWNtmTksMDwj4%2BD%2Ft%2FFNaZqA6Y1MqzQ%3D%3D'#[CODE 1]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#[CODE 2]def getTourismStatsItem(yyyymm, national_code, ed_cd): service_url = "http://openapi.tour.go.kr/openapi/service/EdrcntTourismStatsService/getEdrcntTourismStatsList" parameters = "?_type=json&serviceKey=" + ServiceKey #인증키 parameters += "&YM=" + yyyymm parameters += "&NAT_CD=" + national_code parameters += "&ED_CD=" + ed_cd url = service_url + parameters retData = getRequestUrl(url) #[CODE 1] if (retData == None): return None else: return json.loads(retData) #[CODE 3]def getTourismStatsService(nat_cd, ed_cd, nStartYear, nEndYear): jsonResult = [] 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 = getTourismStatsItem(yyyymm, nat_cd, ed_cd) #[CODE 2] 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('-----------------------------------------------') jsonResult.append({'nat_name': natName, 'nat_cd': nat_cd, 'yyyymm': yyyymm, 'visit_cnt': num}) result.append([natName, nat_cd, yyyymm, num]) return (jsonResult, result, natName, ed, dataEND) #[CODE 0]def main(): jsonResult = [] result = [] print("<국내 입국한 외국인의 통계 데이터를 수집합니다.>") nat_cd = input('국가 코드를 입력하세요(중국: 112 / 일본: 130 / 미국: 275) : ') nStartYear = int(input('데이터를 몇 년도부터 수집할까요? : ')) nEndYear = int(input('데이터를 몇 년도까지 수집할까요? : ')) ed_cd = "E" # E : 방한외래관광객, D : 해외출국 jsonResult, result, natName, dataEND = getTourismStatsService(nat_cd, ed_cd, nStartYear, nEndYear) #[CODE 3] #파일저장 1 : json 파일 with open('./%s_%s_%d_%s.json' % (natName, ed, nStartYear, dataEND), 'w', encoding='ut48') as outfile: jsonFile = json.dumps(jsonResult, indent = 4, sort_keys = True, ensure_ascii = False) outfile.write(jsonFile) #파일저장 2 : csv 파일 columns = ["입국자국가", "국가코드", "입국연월", "입국자 수"] result_df.to_csv('./%s_%s_%d_%s.csv' % (natName, ed, nStartYear, dataEND), index=False, encoding='cp949')if __name__ == '__main__': main()여기까지 짰는데 비주얼스튜디오에서 뜨는 오류메시지는 다음과 같습니다NameError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_22276/933122399.py in <module> 97 98 if __name__ == '__main__': ---> 99 main() ~\AppData\Local\Temp/ipykernel_22276/933122399.py in main() 85 ed_cd = "E" # E : 방한외래관광객, D : 해외출국 86 ---> 87 jsonResult, result, natName, dataEND = getTourismStatsService(nat_cd, ed_cd, nStartYear, nEndYear) #[CODE 3] 88 89 #파일저장 1 : json 파일 ~\AppData\Local\Temp/ipykernel_22276/933122399.py in getTourismStatsService(nat_cd, ed_cd, nStartYear, nEndYear) 71 jsonResult.append({'nat_name': natName, 'nat_cd': nat_cd, 'yyyymm': yyyymm, 'visit_cnt': num}) 72 result.append([natName, nat_cd, yyyymm, num]) ---> 73 return (jsonResult, result, natName, ed, dataEND) 74 75 NameError: name 'ed' is not defined 인터넷에 검색해서 ed 정의한 식 위에 global ed를 붙여보면 name 'ed' is not defined 라고 뜹니다ㅠㅠ 어떻게 해결해야 하나요 목록수정삭제답변글쓰기 댓글 [2] 댓글작성자(*)비밀번호(*)내용(*) 댓글 등록 더보기이전[re]텀프로젝트 관련 질문입니다!drsungwon 2022-04-16다음[re]책에서 크롤링 예제를 그대로 따라해봤는데 오류가 생깁니다..신종민 조교2022-04-16 Powered by MangBoard | 워드프레스 쇼핑몰 망보드