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 |