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

신뢰도: 보통

....


Posted by HHHimchan
,