Python에서 xml을 파싱하여 처리하는 간단한 방법을 소개합니다.
각종 사이트에서 전달되는 RSS(Rich Site Summary) 컨텐츠를 가지고 쉽게 재가공 하여 사용할 수 있도록 도와주는 외부 모듈입니다.
최신정보등을 자동 수집할 수 있다는 장점이 있다.( ex) 기상정보, 뉴스정보 등)
RSS에 대해 더 자세히 알고 싶다면 위키백과를 참고하세요 : https://ko.wikipedia.org/wiki/RSS
Pypi : https://pypi.python.org/pypi/beautifulsoup4/4.4.1
BeautifulSoup 공식사이트 : http://www.crummy.com/software/BeautifulSoup/bs4/doc/
Root부터 찾을 필요없이, 직접 명시하는 TAG에 접근이 가능한 것이 무척 편합니다.
xml을 직접 open 하는 것과, 기상청 RSS 를 가져와서 처리하는 예제 두개를 아래에 올립니다.
====================================================================================
Track1 3:15 Track2 2:22 Track3 5:33 Track4 4:33
#Example1
from bs4 import BeautifulSoup
fp = open("song.xml","r")
soup = BeautifulSoup(fp, "html.parser")
# findAll로 해당되는 TAG를 검색
for songElement in soup.findAll('song'):
# 해당 TAG안의 Attribute(속성) 값을 가져올때는 아래와 같이 사용
print(songElement['singer'],songElement['album'])
# Tag 아래에 있는 다른 Tag를 가져올경우 아래와 같이 사용
print(songElement.title.string,songElement.length.string)
<결과>
singer1 album1
Track1 3:15
singer2 album2
Track2 2:22
singer3 album3
Track3 5:33
singer4 album4
Track4 4:33
====================================================================================
#Example2
from bs4 import BeautifulSoup
import urllib.request as MyURL
# 서울/경기도 RSS
japi = 'http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=109' # 서울/경기
response = MyURL.urlopen(japi)
weather = BeautifulSoup(response, "html.parser")
for location in weather.findAll('location'): # location 까지 알아서 찾음.
print(location.city.string)
print("="*20)
for data in location.findAll('data'):
# xml에서 태그명은 대소문자 구분을 하지 않음
print("시간:",data.tmef.string)
print("날씨:",data.wf.string)
print("최저:",data.tmn.string)
print("최고:",data.tmx.string)
print("신뢰도:",data.reliability.string)
print("")
#Example3서울ㆍ인천ㆍ경기도 서울 A02 2015-12-05 00:00 구름많음 -1 5 보통 A02 2015-12-05 12:00 구름조금 -1 5 보통 A02 2015-12-06 00:00 구름많음 -2 5 보통
결과
서울
====================
시간: 2015-12-05 00:00
날씨: 구름많음
최저: -1
최고: 5
신뢰도: 보통
시간: 2015-12-05 12:00
날씨: 구름조금
최저: -1
최고: 5
신뢰도: 보통
....
'Computer Science > Python' 카테고리의 다른 글
| 유용한 파이선 라이브러리 10가지(itworld 기사 펌) (0) | 2015.11.26 |
|---|---|
| [openpyxl] Python으로 엑셀 문서를 만들어보자 (0) | 2015.11.26 |
| E-Clipse로 Python 개발하기 환경세팅 (4) | 2015.10.19 |

