본문 바로가기
Python

Python - 정부 공공 데이터 Open API로 크롤링 하기

by DGK 2021. 11. 3.

 

인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

정부 공공 데이터 Open API를 활용한 크롤링(Python)

정부 공공 데이터 Open API를 활용하여 크롤링을 연습하고자 한다.

 

정부 공공 데이터 Open API를 통한 크롤링 연습(대기오염 정보)

import requests

service_key = '(본인)일반인증키'
params = '&numOfRows=10&pageNo=1&sidoName=서울&ver=1.3'
open_api = 'http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getCtprvnRltmMesureDnsty?serviceKey=' + service_key + params

res = requests.get(open_api)

print(res.text)

 

```

결과 :

 

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <header>
        <resultCode>00</resultCode>
        <resultMsg>NORMAL_CODE</resultMsg>
    </header>
    <body>
        <items>
            <item>
                <pm25Grade1h>2</pm25Grade1h>
                <pm10Value24>36</pm10Value24>
                <so2Value>0.004</so2Value>
                <pm10Grade1h>2</pm10Grade1h>
                <pm10Value>35</pm10Value>
                <o3Grade>1</o3Grade>
                <pm25Flag/>
                <khaiGrade>2</khaiGrade>
                <pm25Value>22</pm25Value>
                <no2Flag/>
                <mangName>도시대기</mangName>
                <stationName>강남구</stationName>
                <no2Value>0.035</no2Value>
                <so2Grade>1</so2Grade>
                <coFlag/>
                <khaiValue>69</khaiValue>
                <coValue>0.6</coValue>
                <pm10Flag/>
                <sidoName>서울</sidoName>
                <pm25Value24>23</pm25Value24>
                <no2Grade>2</no2Grade>
                <o3Flag/>
                <pm25Grade>2</pm25Grade>
                <so2Flag/>
                <coGrade>1</coGrade>
                <dataTime>2021-11-03 08:00</dataTime>
                <pm10Grade>2</pm10Grade>
                <o3Value>0.002</o3Value>
            </item>
            <item>
                <pm25Grade1h>2</pm25Grade1h>
                <pm10Value24>36</pm10Value24>
                <so2Value>0.004</so2Value>
                <pm10Grade1h>2</pm10Grade1h>
                <pm10Value>44</pm10Value>
                <o3Grade>1</o3Grade>
                <pm25Flag/>
                <khaiGrade>2</khaiGrade>
                <pm25Value>29</pm25Value>
                <no2Flag/>
                <mangName>도시대기</mangName>
                <stationName>서초구</stationName>
                <no2Value>0.044</no2Value>
                <so2Grade>1</so2Grade>
                <coFlag/>
                <khaiValue>77</khaiValue>
                <coValue>0.8</coValue>
                <pm10Flag/>
                <sidoName>서울</sidoName>
                <pm25Value24>26</pm25Value24>
                <no2Grade>2</no2Grade>
                <o3Flag/>
                <pm25Grade>2</pm25Grade>
                <so2Flag/>
                <coGrade>1</coGrade>
                <dataTime>2021-11-03 08:00</dataTime>
                <pm10Grade>2</pm10Grade>
                <o3Value>0.008</o3Value>
            </item>
            <item>
                <pm25Grade1h>2</pm25Grade1h>
                <pm10Value24>43</pm10Value24>
                <so2Value>0.003</so2Value>
                <pm10Grade1h>2</pm10Grade1h>
                <pm10Value>54</pm10Value>
                <o3Grade>1</o3Grade>
                <pm25Flag/>
                <khaiGrade>2</khaiGrade>
                <pm25Value>28</pm25Value>
                <no2Flag/>
                <mangName>도로변대기</mangName>
                <stationName>도산대로</stationName>
                <no2Value>0.041</no2Value>
                <so2Grade>1</so2Grade>
                <coFlag/>
                <khaiValue>77</khaiValue>
                <coValue>1.0</coValue>
                <pm10Flag/>
                <sidoName>서울</sidoName>
                <pm25Value24>26</pm25Value24>
                <no2Grade>2</no2Grade>
                <o3Flag/>
                <pm25Grade>2</pm25Grade>
                <so2Flag/>
                <coGrade>1</coGrade>
                <dataTime>2021-11-03 08:00</dataTime>
                <pm10Grade>2</pm10Grade>
                <o3Value>0.003</o3Value>
            </item>
            <item>
                <pm25Grade1h>2</pm25Grade1h>
                <pm10Value24>33</pm10Value24>
                <so2Value>0.004</so2Value>
                <pm10Grade1h>2</pm10Grade1h>
                <pm10Value>39</pm10Value>
                <o3Grade>1</o3Grade>
                <pm25Flag/>
                <khaiGrade>2</khaiGrade>
                <pm25Value>22</pm25Value>
                <no2Flag/>
                <mangName>도로변대기</mangName>
                <stationName>강남대로</stationName>
                <no2Value>0.030</no2Value>
                <so2Grade>1</so2Grade>
                <coFlag/>
                <khaiValue>53</khaiValue>
                <coValue>1.1</coValue>
                <pm10Flag/>
                <sidoName>서울</sidoName>
                <pm25Value24>22</pm25Value24>
                <no2Grade>1</no2Grade>
                <o3Flag/>
                <pm25Grade>2</pm25Grade>
                <so2Flag/>
                <coGrade>1</coGrade>
                <dataTime>2021-11-03 08:00</dataTime>
                <pm10Grade>2</pm10Grade>
                <o3Value>0.006</o3Value>
            </item>
            <item>
                <pm25Grade1h>2</pm25Grade1h>
                <pm10Value24>39</pm10Value24>
                <so2Value>0.004</so2Value>
                <pm10Grade1h>2</pm10Grade1h>
                <pm10Value>42</pm10Value>
                <o3Grade>1</o3Grade>
                <pm25Flag/>
                <khaiGrade>2</khaiGrade>
                <pm25Value>27</pm25Value>
                <no2Flag/>
                <mangName>도시대기</mangName>
                <stationName>송파구</stationName>
                <no2Value>0.040</no2Value>
                <so2Grade>1</so2Grade>
                <coFlag/>
                <khaiValue>74</khaiValue>
                <coValue>0.8</coValue>
                <pm10Flag/>
                <sidoName>서울</sidoName>
                <pm25Value24>25</pm25Value24>
                <no2Grade>2</no2Grade>
                <o3Flag/>
                <pm25Grade>2</pm25Grade>
                <so2Flag/>
                <coGrade>1</coGrade>
                <dataTime>2021-11-03 08:00</dataTime>
                <pm10Grade>2</pm10Grade>
                <o3Value>0.002</o3Value>
            </item>
            <item>
                <pm25Grade1h>2</pm25Grade1h>
                <pm10Value24>38</pm10Value24>
                <so2Value>0.003</so2Value>
                <pm10Grade1h>2</pm10Grade1h>
                <pm10Value>36</pm10Value>
                <o3Grade>1</o3Grade>
                <pm25Flag/>
                <khaiGrade>2</khaiGrade>
                <pm25Value>24</pm25Value>
                <no2Flag/>
                <mangName>도시대기</mangName>
                <stationName>강동구</stationName>
                <no2Value>0.031</no2Value>
                <so2Grade>1</so2Grade>
                <coFlag/>
                <khaiValue>77</khaiValue>
                <coValue>0.6</coValue>
                <pm10Flag/>
                <sidoName>서울</sidoName>
                <pm25Value24>26</pm25Value24>
                <no2Grade>2</no2Grade>
                <o3Flag/>
                <pm25Grade>2</pm25Grade>
                <so2Flag/>
                <coGrade>1</coGrade>
                <dataTime>2021-11-03 08:00</dataTime>
                <pm10Grade>2</pm10Grade>
                <o3Value>0.002</o3Value>
            </item>
            <item>
                <pm25Grade1h>2</pm25Grade1h>
                <pm10Value24>45</pm10Value24>
                <so2Value>0.004</so2Value>
                <pm10Grade1h>2</pm10Grade1h>
                <pm10Value>46</pm10Value>
                <o3Grade>1</o3Grade>
                <pm25Flag/>
                <khaiGrade>2</khaiGrade>
                <pm25Value>23</pm25Value>
                <no2Flag/>
                <mangName>도로변대기</mangName>
                <stationName>천호대로</stationName>
                <no2Value>0.038</no2Value>
                <so2Grade>1</so2Grade>
                <coFlag/>
                <khaiValue>74</khaiValue>
                <coValue>0.8</coValue>
                <pm10Flag/>
                <sidoName>서울</sidoName>
                <pm25Value24>25</pm25Value24>
                <no2Grade>2</no2Grade>
                <o3Flag/>
                <pm25Grade>2</pm25Grade>
                <so2Flag/>
                <coGrade>1</coGrade>
                <dataTime>2021-11-03 08:00</dataTime>
                <pm10Grade>2</pm10Grade>
                <o3Value>0.001</o3Value>
            </item>
            <item>
                <pm25Grade1h>2</pm25Grade1h>
                <pm10Value24>37</pm10Value24>
                <so2Value>0.005</so2Value>
                <pm10Grade1h>2</pm10Grade1h>
                <pm10Value>37</pm10Value>
                <o3Grade>1</o3Grade>
                <pm25Flag/>
                <khaiGrade>2</khaiGrade>
                <pm25Value>26</pm25Value>
                <no2Flag/>
                <mangName>도시대기</mangName>
                <stationName>금천구</stationName>
                <no2Value>0.043</no2Value>
                <so2Grade>1</so2Grade>
                <coFlag/>
                <khaiValue>79</khaiValue>
                <coValue>0.7</coValue>
                <pm10Flag/>
                <sidoName>서울</sidoName>
                <pm25Value24>27</pm25Value24>
                <no2Grade>2</no2Grade>
                <o3Flag/>
                <pm25Grade>2</pm25Grade>
                <so2Flag/>
                <coGrade>1</coGrade>
                <dataTime>2021-11-03 08:00</dataTime>
                <pm10Grade>2</pm10Grade>
                <o3Value>0.002</o3Value>
            </item>
            <item>
                <pm25Grade1h>2</pm25Grade1h>
                <pm10Value24>47</pm10Value24>
                <so2Value>0.005</so2Value>
                <pm10Grade1h>2</pm10Grade1h>
                <pm10Value>55</pm10Value>
                <o3Grade>1</o3Grade>
                <pm25Flag/>
                <khaiGrade>3</khaiGrade>
                <pm25Value>32</pm25Value>
                <no2Flag/>
                <mangName>도로변대기</mangName>
                <stationName>시흥대로</stationName>
                <no2Value>0.076</no2Value>
                <so2Grade>1</so2Grade>
                <coFlag/>
                <khaiValue>117</khaiValue>
                <coValue>1.1</coValue>
                <pm10Flag/>
                <sidoName>서울</sidoName>
                <pm25Value24>26</pm25Value24>
                <no2Grade>3</no2Grade>
                <o3Flag/>
                <pm25Grade>2</pm25Grade>
                <so2Flag/>
                <coGrade>1</coGrade>
                <dataTime>2021-11-03 08:00</dataTime>
                <pm10Grade>2</pm10Grade>
                <o3Value>0.002</o3Value>
            </item>
            <item>
                <pm25Grade1h>2</pm25Grade1h>
                <pm10Value24>33</pm10Value24>
                <so2Value>0.002</so2Value>
                <pm10Grade1h>2</pm10Grade1h>
                <pm10Value>34</pm10Value>
                <o3Grade>1</o3Grade>
                <pm25Flag/>
                <khaiGrade>2</khaiGrade>
                <pm25Value>21</pm25Value>
                <no2Flag/>
                <mangName>도시대기</mangName>
                <stationName>강북구</stationName>
                <no2Value>0.021</no2Value>
                <so2Grade>1</so2Grade>
                <coFlag/>
                <khaiValue>61</khaiValue>
                <coValue>0.5</coValue>
                <pm10Flag/>
                <sidoName>서울</sidoName>
                <pm25Value24>20</pm25Value24>
                <no2Grade>1</no2Grade>
                <o3Flag/>
                <pm25Grade>2</pm25Grade>
                <so2Flag/>
                <coGrade>1</coGrade>
                <dataTime>2021-11-03 08:00</dataTime>
                <pm10Grade>2</pm10Grade>
                <o3Value>0.007</o3Value>
            </item>
        </items>
        <numOfRows>10</numOfRows>
        <pageNo>1</pageNo>
        <totalCount>40</totalCount>
    </body>
</response>

 

```

 

https://www.data.go.kr 에서 회원가입 후 Open API 활용신청을 통해 본인의 인증키를 발급받아 변수 service_key

에 넣으면 된다.

또한, 변수 params에는 Open API의 요청 메시지 항목명과 해당 값을 넣은 것이다. (변수 open_api의 형식 중요)

일반적인 크롤링처럼, requests 라이브러리의 get() 함수를 통해 정부 공공 데이터 Open API로 데이터를 가져온다.

 

참고로, 위의 예시코드에서 정부 Open API를 통해 크롤링하여 가져온 데이터는 XML 형태이다.(JSON 형태도 존재)

 

 

정부 공공 데이터 Open API를 통한 크롤링 연습(데이터 추출)

import requests
from bs4 import BeautifulSoup

service_key = '(본인)일반인증키'
params = '&numOfRows=10&pageNo=1&sidoName=서울&ver=1.3'
open_api = 'http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getCtprvnRltmMesureDnsty?serviceKey=' + service_key + params

res = requests.get(open_api)
soup = BeautifulSoup(res.content, 'html.parser')

data = soup.find_all('item')
for item in data:
    print(item)
    
    stationname = item.find('stationname')
    pm10grade = item.find('pm10grade')
    print(stationname.get_text(), pm10grade.get_text())

 

```

find_all() 결과 :

 

<item>
<pm25grade1h></pm25grade1h>
<pm10value24>-</pm10value24>
<so2value>-</so2value>
<pm10grade1h></pm10grade1h>
<pm10value>-</pm10value>
<o3grade></o3grade>
<pm25flag>점검및교정</pm25flag>
<khaigrade></khaigrade>
<pm25value>-</pm25value>
<no2flag>점검및교정</no2flag>
<mangname>도시대기</mangname>
<stationname>강남구</stationname>
<no2value>-</no2value>
<so2grade></so2grade>
<coflag>점검및교정</coflag>
<khaivalue>-</khaivalue>
<covalue>-</covalue>
<pm10flag>점검및교정</pm10flag>
<sidoname>서울</sidoname>
<pm25value24>-</pm25value24>
<no2grade></no2grade>
<o3flag>점검및교정</o3flag>
<pm25grade></pm25grade>
<so2flag>점검및교정</so2flag>
<cograde></cograde>
<datatime>2021-11-03 14:00</datatime>
<pm10grade></pm10grade>
<o3value>-</o3value>
</item>
강남구 
<item>
<pm25grade1h>1</pm25grade1h>
<pm10value24>38</pm10value24>
<so2value>0.003</so2value>
<pm10grade1h>1</pm10grade1h>
<pm10value>23</pm10value>
<o3grade>2</o3grade>
<pm25flag></pm25flag>
<khaigrade>2</khaigrade>
<pm25value>13</pm25value>
<no2flag></no2flag>
<mangname>도시대기</mangname>
<stationname>서초구</stationname>
<no2value>0.020</no2value>
<so2grade>1</so2grade>
<coflag></coflag>
<khaivalue>79</khaivalue>
<covalue>0.4</covalue>
<pm10flag></pm10flag>
<sidoname>서울</sidoname>
<pm25value24>27</pm25value24>
<no2grade>1</no2grade>
<o3flag></o3flag>
<pm25grade>2</pm25grade>
<so2flag></so2flag>
<cograde>1</cograde>
<datatime>2021-11-03 14:00</datatime>
<pm10grade>2</pm10grade>
<o3value>0.033</o3value>
</item>
서초구 2
<item>
<pm25grade1h>1</pm25grade1h>
<pm10value24>40</pm10value24>
<so2value>0.003</so2value>
<pm10grade1h>1</pm10grade1h>
<pm10value>21</pm10value>
<o3grade>2</o3grade>
<pm25flag></pm25flag>
<khaigrade>2</khaigrade>
<pm25value>11</pm25value>
<no2flag></no2flag>
<mangname>도로변대기</mangname>
<stationname>도산대로</stationname>
<no2value>0.021</no2value>
<so2grade>1</so2grade>
<coflag></coflag>
<khaivalue>69</khaivalue>
<covalue>0.6</covalue>
<pm10flag></pm10flag>
<sidoname>서울</sidoname>
<pm25value24>23</pm25value24>
<no2grade>1</no2grade>
<o3flag></o3flag>
<pm25grade>2</pm25grade>
<so2flag></so2flag>
<cograde>1</cograde>
<datatime>2021-11-03 14:00</datatime>
<pm10grade>2</pm10grade>
<o3value>0.035</o3value>
</item>
도산대로 2
<item>
<pm25grade1h>2</pm25grade1h>
<pm10value24>39</pm10value24>
<so2value>-</so2value>
<pm10grade1h>2</pm10grade1h>
<pm10value>35</pm10value>
<o3grade></o3grade>
<pm25flag></pm25flag>
<khaigrade></khaigrade>
<pm25value>19</pm25value>
<no2flag>점검및교정</no2flag>
<mangname>도로변대기</mangname>
<stationname>강남대로</stationname>
<no2value>-</no2value>
<so2grade></so2grade>
<coflag>점검및교정</coflag>
<khaivalue>-</khaivalue>
<covalue>-</covalue>
<pm10flag></pm10flag>
<sidoname>서울</sidoname>
<pm25value24>22</pm25value24>
<no2grade></no2grade>
<o3flag>점검및교정</o3flag>
<pm25grade>2</pm25grade>
<so2flag>점검및교정</so2flag>
<cograde></cograde>
<datatime>2021-11-03 14:00</datatime>
<pm10grade>2</pm10grade>
<o3value>-</o3value>
</item>
강남대로 2
<item>
<pm25grade1h>2</pm25grade1h>
<pm10value24>45</pm10value24>
<so2value>0.003</so2value>
<pm10grade1h>2</pm10grade1h>
<pm10value>33</pm10value>
<o3grade>2</o3grade>
<pm25flag></pm25flag>
<khaigrade>2</khaigrade>
<pm25value>18</pm25value>
<no2flag></no2flag>
<mangname>도시대기</mangname>
<stationname>송파구</stationname>
<no2value>0.027</no2value>
<so2grade>1</so2grade>
<coflag></coflag>
<khaivalue>74</khaivalue>
<covalue>0.4</covalue>
<pm10flag></pm10flag>
<sidoname>서울</sidoname>
<pm25value24>25</pm25value24>
<no2grade>1</no2grade>
<o3flag></o3flag>
<pm25grade>2</pm25grade>
<so2flag></so2flag>
<cograde>1</cograde>
<datatime>2021-11-03 14:00</datatime>
<pm10grade>2</pm10grade>
<o3value>0.034</o3value>
</item>
송파구 2
<item>
<pm25grade1h></pm25grade1h>
<pm10value24>-</pm10value24>
<so2value>-</so2value>
<pm10grade1h></pm10grade1h>
<pm10value>-</pm10value>
<o3grade></o3grade>
<pm25flag>점검및교정</pm25flag>
<khaigrade></khaigrade>
<pm25value>-</pm25value>
<no2flag>점검및교정</no2flag>
<mangname>도시대기</mangname>
<stationname>강동구</stationname>
<no2value>-</no2value>
<so2grade></so2grade>
<coflag>점검및교정</coflag>
<khaivalue>-</khaivalue>
<covalue>-</covalue>
<pm10flag>점검및교정</pm10flag>
<sidoname>서울</sidoname>
<pm25value24>-</pm25value24>
<no2grade></no2grade>
<o3flag>점검및교정</o3flag>
<pm25grade></pm25grade>
<so2flag>점검및교정</so2flag>
<cograde></cograde>
<datatime>2021-11-03 14:00</datatime>
<pm10grade></pm10grade>
<o3value>-</o3value>
</item>
강동구 
<item>
<pm25grade1h>2</pm25grade1h>
<pm10value24>51</pm10value24>
<so2value>0.003</so2value>
<pm10grade1h>2</pm10grade1h>
<pm10value>49</pm10value>
<o3grade>1</o3grade>
<pm25flag></pm25flag>
<khaigrade>2</khaigrade>
<pm25value>16</pm25value>
<no2flag></no2flag>
<mangname>도로변대기</mangname>
<stationname>천호대로</stationname>
<no2value>0.034</no2value>
<so2grade>1</so2grade>
<coflag></coflag>
<khaivalue>72</khaivalue>
<covalue>0.5</covalue>
<pm10flag></pm10flag>
<sidoname>서울</sidoname>
<pm25value24>24</pm25value24>
<no2grade>2</no2grade>
<o3flag></o3flag>
<pm25grade>2</pm25grade>
<so2flag></so2flag>
<cograde>1</cograde>
<datatime>2021-11-03 14:00</datatime>
<pm10grade>2</pm10grade>
<o3value>0.024</o3value>
</item>
천호대로 2
<item>
<pm25grade1h>2</pm25grade1h>
<pm10value24>38</pm10value24>
<so2value>0.005</so2value>
<pm10grade1h>2</pm10grade1h>
<pm10value>39</pm10value>
<o3grade>2</o3grade>
<pm25flag></pm25flag>
<khaigrade>2</khaigrade>
<pm25value>24</pm25value>
<no2flag></no2flag>
<mangname>도시대기</mangname>
<stationname>금천구</stationname>
<no2value>0.024</no2value>
<so2grade>1</so2grade>
<coflag></coflag>
<khaivalue>77</khaivalue>
<covalue>0.4</covalue>
<pm10flag></pm10flag>
<sidoname>서울</sidoname>
<pm25value24>26</pm25value24>
<no2grade>1</no2grade>
<o3flag></o3flag>
<pm25grade>2</pm25grade>
<so2flag></so2flag>
<cograde>1</cograde>
<datatime>2021-11-03 14:00</datatime>
<pm10grade>2</pm10grade>
<o3value>0.036</o3value>
</item>
금천구 2
<item>
<pm25grade1h>2</pm25grade1h>
<pm10value24>50</pm10value24>
<so2value>0.004</so2value>
<pm10grade1h>2</pm10grade1h>
<pm10value>42</pm10value>
<o3grade>1</o3grade>
<pm25flag></pm25flag>
<khaigrade>2</khaigrade>
<pm25value>22</pm25value>
<no2flag></no2flag>
<mangname>도로변대기</mangname>
<stationname>시흥대로</stationname>
<no2value>0.035</no2value>
<so2grade>1</so2grade>
<coflag></coflag>
<khaivalue>79</khaivalue>
<covalue>0.5</covalue>
<pm10flag></pm10flag>
<sidoname>서울</sidoname>
<pm25value24>27</pm25value24>
<no2grade>2</no2grade>
<o3flag></o3flag>
<pm25grade>2</pm25grade>
<so2flag></so2flag>
<cograde>1</cograde>
<datatime>2021-11-03 14:00</datatime>
<pm10grade>2</pm10grade>
<o3value>0.026</o3value>
</item>
시흥대로 2
<item>
<pm25grade1h>2</pm25grade1h>
<pm10value24>42</pm10value24>
<so2value>0.003</so2value>
<pm10grade1h>2</pm10grade1h>
<pm10value>31</pm10value>
<o3grade>2</o3grade>
<pm25flag></pm25flag>
<khaigrade>2</khaigrade>
<pm25value>17</pm25value>
<no2flag></no2flag>
<mangname>도시대기</mangname>
<stationname>강북구</stationname>
<no2value>0.019</no2value>
<so2grade>1</so2grade>
<coflag></coflag>
<khaivalue>69</khaivalue>
<covalue>0.3</covalue>
<pm10flag></pm10flag>
<sidoname>서울</sidoname>
<pm25value24>23</pm25value24>
<no2grade>1</no2grade>
<o3flag></o3flag>
<pm25grade>2</pm25grade>
<so2flag></so2flag>
<cograde>1</cograde>
<datatime>2021-11-03 14:00</datatime>
<pm10grade>2</pm10grade>
<o3value>0.037</o3value>
</item>
강북구 2

 

 

find() 결과 :

 

중구 2

한강대로 2

종로구 2

청계천로 2

종로 2

용산구 2

광진구 2

성동구 2

강변북로 2

중랑구 2

 

```

 

일반적인 크롤링처럼, requests와 bs4 라이브러리를 사용하여 find_all() 함수로 item 태그에 존재하는 데이터를 

가져온 후, 다시 한 번 find() 함수를 통해 stationname 태그와 pm10grade 태그의 정보를 추출한 것이다. 

 

여기서 find_all() 함수로 가져온 데이터는 XML 형태로 작성된 데이터이다.

 

 

참고내용

* XML이란?

 

XML은 Extensible Markup Language의 약자로, 특정 목적에 따라 데이터를 태그로 감싸서 마크업하는 범용적인

포멧이다.

또한, 마크업 언어는 태그 등을 이용하여 데이터의 구조를 기술하는 언어로 XML은 HTML과 유사하게 데이터를 계층

구조로 표현한다.

 

XML의 기본 구조는 아래와 같다.

 

  - <태그 속성 = "속성 값">내용</태그>

 

단, XML은 HTML과 달리 태그의 속성을 사용자가 설정할 수 있으며 JSON과 함께 API의 데이터를 다루는데 사용된다.

 

 

댓글