공공데이터 포털에서 XML과 JSON 데이터 읽어오기
- 농업기상 조회월별 일 기본 관측데이터(XML) 조회
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849api_key = '발급받은 api_key 입력'import requestsimport bs4import pandas as pdfrom lxml import htmlpage_no = 1page_size = 100my_url = 'http://apis.data.go.kr/1390802/AgriWeather/WeatherObsrInfo/GnrlWeather/getWeatherYearDayList'params = {'ServiceKey' : api_key ,'Page_No' : page_no,'Page_Size' : page_size,'search_Year' : 2020,'obsr_Spot_Code' : '565862A001'}lst_rows = []for i in range(1, 1000000):params['Page_No'] = iresponse = requests.get(my_url, params=params, verify=False) #verify설정 추가content = response.textxml_obj = bs4.BeautifulSoup(content,'lxml-xml')result_Code = int(xml_obj.findAll('result_Code').pop().text)if result_Code != 200:print('Error')break#total_Count = int(xml_obj.findAll('total_Count').pop().text)rows = xml_obj.findAll('item')if len(rows) <= 0: breakfor r in rows:dict_row = dict()for t in r.contents:if t.name is not None:dict_row[t.name] = t.textlst_rows.append(pd.Series(dict_row))df = pd.concat(lst_rows, axis=1)df = df.Tdf.to_csv('result.csv')print(df) - 기상청_지상(종관, ASOS) 일자료(JSON) 조회서비스
12345678910111213141516171819202122232425262728293031323334353637383940api_key = ''import requestsimport jsonimport pandas as pdlst_rows = []page_no = 1page_size = 20my_url = 'http://apis.data.go.kr/1360000/AsosDalyInfoService/getWthrDataList'params = {'ServiceKey' : api_key ,'numOfRows' : page_size,'pageNo' : page_no,'dataType' : 'JSON','dataCd' : 'ASOS','dateCd' : 'DAY','startDt' : '20100101','endDt' : '20100601','stnIds' : '108'}for i in range(1, 1000000):params['pageNo'] = iresponse = requests.get(my_url, params=params, verify=False) #verify설정 추가html = json.loads(response.text)resultCode = html['response']['header']['resultCode']if resultCode != '00':breakitems = html['response']['body']['items']['item']for item in items:lst_rows.append(pd.Series(item))df = pd.concat(lst_rows, axis=1)df = df.Tdf.to_csv('result.csv')print(df)