웹에서 데이터를 받을 때 많이 보는 포맷은 XML과 JSON이 있습니다. XML데이터를 beautifulsoup을 이용해서 파싱할 수도 있지만, 판다스 데이터프레임으로 만들기가 어렵습니다. 그래서 더 쉬운 방법을 찾게 되는데요. 오늘은 파이썬에서 XML데이터를 쉽게 파싱하는 방법에 대해서 알아보겠습니다.

 

 

XML자료형이란?

XML은 특수한 목적을 갖는 마크업 언어를 만들 때 권장되는 언어라고 합니다. 웹에서 데이터를 제공할 때도 XML포맷을 보게 되는데요. 데이터 레이아웃이 태그로 이루어져 있습니다. 칼럼명이 태그가 되고 그 안에 값이 들어갑니다. 태그의 구조로 데이터 레이아웃을 표현하고 있습니다.

그래서 beautifulsoup보다는 다른 도구를 이용하는 것이 편리합니다.

 

 

xml_to_dict 패키지를 이용합니다

xml_to_dict 패키지는 xml을 딕셔너리 자료형으로 변환해줍니다. 딕셔너리 자료형으로 바뀌면 쉽게 판다스 데이터프레임으로 바꿀 수 있습니다.

예를 들어 아래와 같이 오픈API를 이용해서 xml데이터를 받았다고 가정해 보겠습니다.

 

import requests
import pandas as pd
from bs4 import BeautifulSoup

url = 'http://www.law.go.kr/DRF/lawSearch.do'

params = {
            "OC" : 'OC입력'
            ,"target" : 'prec'
            ,"type" : "XML"
            ,"query" : "교통사고"
          }

response = requests.get(url, params=params)
result = BeautifulSoup(response.content, 'xml')

 

 

참고로 xml 데이터를 BeautifulSoup으로 설치할 때 아래와 같은 에러가 발생할 수 있습니다.

bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: xml. Do you need to install a parser library?

 

그럴 때는 lxml 패키지를 설치하고, 파이썬 커널을 재시작하고 진행하면 됩니다.

 

 

xml을 출력하면 아래와 같은 내용을 확인할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<PrecSearch><target>prec</target><키워드>유치권</키워드><section>evtNm</section><totalCnt>39</totalCnt><page>1</page><prec id="1"><판례일련번호>212951</판례일련번호><사건명>유치권부존재확인</사건명><사건번호>2020다218031</사건번호><선고일자>2020.07.09</선고일자><법원명>대법원</법원명><법원종류코드/><사건종류명>민사</사건종류명><사건종류코드>400101</사건종류코드><판결유형>판결</판결유형><선고>선고</선고><판례상세링크>/DRF/lawService.do?OC=esnsft&amp;target=prec&amp;ID=212951&amp;type=HTML&amp;mobileYn=</판례상세링크></prec><prec id="2"> ...

 

먼저 xml_to_dict를 설치합니다. pip install xml_to_dict 명령으로 손쉽게 설치할 수 있습니다. 이후에 아래와 같이 코드를 실행하면 딕셔너리로 쉽게 파싱할 수 있습니다. BeautifulSoup으로 파싱하기 전 데이터를 넣어줘야 하는 점은 주의하시기 바랍니다.

 

from xml_to_dict import XMLtoDict

xd = XMLtoDict()
xd.parse(response.content)

 

 

딕셔너리이기 때문에 판다스 데이터프레임으로도 쉽게 바꿀 수 있습니다.

 

import pandas as pd

pd.DataFrame(xd.parse(response.content)['PrecSearch']['prec'])

 


오늘은 이렇게 파이썬 XML 파싱 쉽게 하는 방법에 대해서 알아보았습니다. xml_to_dict 패키지를 이용해서 쉽게 딕셔너리 자료형으로 바꿀 수 있었습니다. 딕셔너리로 바꾸고 나면 쉽게 데이터프레임으로도 변환이 가능했습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기