1. ๋ฐ์ดํฐ ์ดํด๋ณด๊ธฐ
๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํด๋ณด๊ฒ ์ต๋๋ค.
์์ฆ ์ฝ๋ก๋๋ก ์ธํด ์ฌ๋๋ฌธ์๊ฐ ์์ฃผ ๋ฐ์ํ๋๋ฐ,, ํ ๋ฒ ์ง์ ์์งํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
-๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ
https://www.data.go.kr/dataset/3058822/openapi.do
๋ฐ์ดํฐ๋ ๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ์์ ํ์ฉ์ ์ฒญ์ ํ๋ฉด ์ธ์ฆํค๋ฅผ ๋ฐ๊ธ๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ธ์ฆํค๋ฅผ ๋ฐ์ผ์๋ฉด, ์ถ๊ฐํ์ ์ ์๋๋งํฌ๋ฅผ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
-pageNo : ํ์ด์ง ๋ฒํธ
-numOfRows: ๋ช๊ฐ์ row ๋ฌถ์์ ๊ฐ์ ธ์ฌ ๊ฑด์ง
์ ๋ ํ๋ฒ์ 50๊ฐ ์ ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ธฐ ์ํด, numOfRows ๋ฅผ 50์ผ๋ก ์ค์ ํ์ต๋๋ค.
์ด ๋ถ๋ถ์ ํ์์ ๋ฐ๋ผ ์กฐ์ ํ์๋ฉด ๋ ๊ฒ ๊ฐ๋ค์.
๋จผ์ , ๋ฐ์ดํฐ์ ํํ๋ฅผ ๋ณด์๋ฉด, xml๋ก ๋์ด์์ต๋๋ค.
์ง๊ธ ์ ๊ฐ ํ์ํ ์ ๋ณด๋
<row> </row> ์์ ๋ชจ๋ ์์ต๋๋ค. ์ด๊ฒ์ ์์งํ๊ธฐ์ํด ์ฝ๋๋ฅผ ์ง๋ด ์๋ค.
2. ์์ค์ฝ๋
import os
from bs4 import BeautifulSoup
from urllib.request import urlopen
import pandas as pd
from time import sleep
pageNO = [x for x in range(1,88)]
df = pd.DataFrame(columns=['create_date', 'location_name', 'msg'])
k = 0
for i in range(len(pageNO)):
URL = 'http://apis.data.go.kr/1741000/DisasterMsg2/getDisasterMsgList?ServiceKey=์ธ์ฆํค&type=xml&pageNo='+str(pageNO[i])+'&numOfRows=50&flag=Y'
if i!=0:
sleep(200)
data = urlopen(URL).read()
soup = BeautifulSoup(data, "html.parser")
for item in soup.findAll("row"):
df.loc[k] = [item.create_date.text, item.location_name.text, item.msg.text]
k=k+1
df.to_csv('./SOSmsg.csv',encoding='utf-8-sig')
3. ์์ค์ฝ๋ ์ค๋ช
df = pd.DataFrame(columns=['create_date', 'location_name', 'msg'])
๋ฐ์ดํฐ ํ๋ ์ columns์ ๋ผ๋ฒจ์ ์ ํด์ค๋๋ค.
pageNO = [x for x in range(1,88)]
1ํ์ด์ง์๋ ๊ฐ์ฅ ์ต๊ทผ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค. ์ ๋ 12์ ๋ง ๋ฐ์ดํฐ๊น์ง ์์งํด์ผํจ์ผ๋ก, pageNO = [x for x in range(1,88)] ๋ก ํ์ฌ, 1๋ถํฐ 87ํ์ด์ง๊น์ง ์์งํ์ต๋๋ค.
sleep(200)
ํ ๋ฒ ์ ์ํ๊ณ , 3๋ถ์ด์ ๋๊ธฐํ ํ ์ ์ํด์ผ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ๋จ์ ์ด ์์์ต๋๋ค.
๊ทธ๋์ ๋๋ํ 200์ด๋ก ๋๊ธฐ์๊ฐ์ ์ก์์ต๋๋ค.
for item in soup.findAll("row"):
df.loc[k] = [item.create_date.text, item.location_name.text, item.msg.text]
row๋ถ๋ถ์ findAll ํ ๋ค, ์์๋๋ก ๋ฐ์ดํฐ ํ๋ ์์ ๋ฃ์ด์ค๋๋ค. create_date.text ๋ <create_date/></create_date>์ฌ์ด์ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋๋ก ๋์์ค๋๋ค.
df.to_csv('./SOSmsg.csv',encoding='utf-8-sig')
ํ๊ธ ๋ฐ์ดํฐ๊ฐ ๊นจ์ง์ง ์๊ฒ ํ๊ธฐ ์ํด 'utf-8-sig'๋ก ์ธ์ฝ๋ฉํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ csvํ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
3. ํ์ธ
์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์ง๊ณ ๋์, ์ ์์ง์ด ๋์๋์ง csv ํ์ผ์ ํ์ธํด๋ณด์์ต๋๋ค.
์ ์์ง์ด ๋์๋ค์!
msg ๋ถ๋ถ์ [๋๋๋ฌธ๊ตฌ์ฒญ] ์ด๋์ ๋ณด๋ธ ์ฌ๋ ๋ฌธ์์ธ์ง ๋ฐ์ดํฐ๋ถ๋ถ์ ๋ค๋ฅธ ์ด๋ก ๋๋๊ณ ์ถ์๋ฐ,, ๊ทธ ์์ ์ ๋ค์ ํฌ์คํ ์์ ์ฌ๋ ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
'Projects > COVID-19 analysis' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ์ํฐ ๋ฐ์ดํฐ KoBERT ๊ฐ์ ๋ถ๋ฅ ๊ฒฐ๊ณผ์ ๋ฆฌ (11) | 2020.05.10 |
---|---|
[๋ฐ์ดํฐ์ ] Sentiment-analysis dataset (0) | 2020.04.23 |
xml ๋ฐ์ดํฐ๋ฅผ csv ํ์ผ๋ก ์์ง 2 - ๊ณต๊ณต์ฌ๋๋ฌธ์๋ฐ์ดํฐ (2) | 2020.03.11 |