Language/Python

서울시 미세먼지 데이터 가져오기

beomzh 2024. 4. 9. 10:28
728x90
반응형

서울시 공공데이터 홈페이지에서 신청하면 금방 받을수 있다 개인별 서비스키를 입력 후 추출

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 미세먼지 데이터 가져와서 추출 API 연습

url = 'http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getCtprvnRltmMesureDnsty'
params ={
    'serviceKey' : '[이건 개인별로]',
    'returnType' : 'xml',
    'numOfRows' : '25',
    'pageNo' : '1',
    'sidoName' : '서울',
    'ver' : '1.0' 
}
response=requests.get(url,params=params) #REQUST로 데이터 요청하기
# print(response.text,"응답완료")

soup = BeautifulSoup(response.text, 'html.parser')
# print(soup)
ItemList=soup.findAll('item')

#데이터를 담기위한 빈 리스트들! 여기에 데이터들을 하나씩 추가해 갈겁니다!
datetimeList=[] 
citynameList=[]
so2valueList=[] # 아황산가스 농도
covalueList=[] # 일산화탄소 농도
o3valueList=[] # 오존 농도
no2valueList=[] # 이산화질소 농도
pm10valueList=[] # 미세먼지(PM10) 농도
pm25valueList=[] # 초미세먼지(PM2.5) 농도


for item in ItemList:
    datetime=item.find('datatime').text 
    cityname=item.find('stationname').text
    so2value=item.find('so2value').text
    covalue=item.find('covalue').text
    o3value=item.find('o3value').text
    no2value=item.find('no2value').text
    pm10value=item.find('pm10value').text
    pm25value=item.find('pm25value').text
    
    datetimeList.append(datetime) 
    citynameList.append(cityname)
    so2valueList.append(so2value)
    covalueList.append(covalue)
    o3valueList.append(o3value)
    no2valueList.append(no2value)
    pm10valueList.append(pm10value)
    pm25valueList.append(pm25value)

print("데이터 모으기 끝!")
#데이터 합치기


# 명칭 지정 후 데이터 적재
DATA= pd.DataFrame()
DATA['time']=datetimeList
DATA['지역']=citynameList
DATA['아황산가스']=so2valueList
DATA['일산화탄소']=covalueList
DATA['오존']=o3valueList
DATA['이산화질소']=no2valueList
DATA['미세먼지(PM10)']=pm10valueList
DATA['초미세먼지(PM2.5)']=pm25valueList



DATA.to_csv("서울시_미세먼지데이터.csv",index=False,encoding="utf-8-sig")
728x90
반응형

'Language > Python' 카테고리의 다른 글

숫자야구  (0) 2024.04.17
계산기 만들기  (0) 2024.04.09
웹 크롤링 - 네이버 증권정보 빼오기  (0) 2024.04.09
로또 번호 추첨기 [Python]  (0) 2023.09.15
숫자야구 [Python]  (0) 2023.09.15