파이썬에서 사용할 수 있는 BeautifulSoup을 이용해 xml 데이터를 sqlite3 DB에 넣는 툴을 만들는 간단한 예입니다.
1. BeautifulSoup 다운로드 및 설치
필요한 파일은 BeautifulSoup 사이트에서 다운로드 받으실 수있습니다. 파이썬 버젼이 2.*이면 3.0* 버젼을 3.*이면 3.1* 버젼중 최신버젼을 다운로드 받습니다. 다운로드가 완료되면 압축을 풀고 터미널에서 아래와 같이 setup.py를 실행합니다.
2. BeautifulSoup 사용예
1) 셈플 xml 파일 (test.xml)
테스트를 위해 간단히 작성해본 XML 입니다.
2) 파이썬 소스파일 (con_data.py)
3) 테스트
아래와 같이 실행하면 test.db가 생성되어 있음을 확인하실 수 있습니다.
해당 사이트에서 문서 페이지를 읽어 보시면 보다 세부적인 기능과 상세한 사용법을 확인하실 수 있습니다. 사용한 con_data.py외 test.xml은 압축하여 첨부하였습니다. 테스트 시에는 터미널에서 chmod +x ./con_data.py로 실행권한을 설정하셔야 합니다.
1. BeautifulSoup 다운로드 및 설치
필요한 파일은 BeautifulSoup 사이트에서 다운로드 받으실 수있습니다. 파이썬 버젼이 2.*이면 3.0* 버젼을 3.*이면 3.1* 버젼중 최신버젼을 다운로드 받습니다. 다운로드가 완료되면 압축을 풀고 터미널에서 아래와 같이 setup.py를 실행합니다.
>python ./setup.py install
2. BeautifulSoup 사용예
1) 셈플 xml 파일 (test.xml)
테스트를 위해 간단히 작성해본 XML 입니다.
<?xml version='1.0' encoding='UTF-8'?>
<alcohol>
<cate1 tt="술">
<cate2 tt="소주">
<item>참이슬</item>
<item>처음처럼</item>
<item>잎새주</item>
</cate2>
<cate2 tt='맥주'>
<item>카스</item>
<item>라거</item>
<item>하이트</item>
</cate2>
</cate1>
<cate1 tt="안주">
<cate2 tt="고가">
<item>회</item>
<item>등심</item>
<item>양곱창</item>
</cate2>
<cate2 tt="저가">
<item>참치캔</item>
<item>날계란</item>
<item>새우깡</item>
</cate2>
</cate1>
</alcohol>
<alcohol>
<cate1 tt="술">
<cate2 tt="소주">
<item>참이슬</item>
<item>처음처럼</item>
<item>잎새주</item>
</cate2>
<cate2 tt='맥주'>
<item>카스</item>
<item>라거</item>
<item>하이트</item>
</cate2>
</cate1>
<cate1 tt="안주">
<cate2 tt="고가">
<item>회</item>
<item>등심</item>
<item>양곱창</item>
</cate2>
<cate2 tt="저가">
<item>참치캔</item>
<item>날계란</item>
<item>새우깡</item>
</cate2>
</cate1>
</alcohol>
2) 파이썬 소스파일 (con_data.py)
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- import sys
- import sqlite3
- from BeautifulSoup import BeautifulStoneSoup
- argCount = len(sys.argv)
- if argCount is not 3:
- print 'Usage:con_data.py [xml file] [db file]'
- sys.exit(0)
- xml_file = sys.argv[1]
- db_file = sys.argv[2]
- #XML open
- src = open(xml_file)
- soup = BeautifulStoneSoup(src)
- #DB & Table create
- db = sqlite3.connect(db_file)
- cursor = db.cursor()
- cursor.execute("CREATE TABLE item(cate1, cate2, name)");
- #Insert data
- for cate1 in soup.alcohol('cate1'):
- query1 = 'INSERT INTO item VALUES("' + cate1['tt'] + '", "'
- print 'CATE1: ' + cate1['tt']
- for cate2 in cate1('cate2'):
- query2 = query1 + cate2['tt'] + '", "'
- print '\tcate2: ' + cate2['tt']
- for item in cate2('item'):
- query3 = query2 + item.string + '")'
- print '\t\t' + item.string
- cursor.execute(query3)
- print "---------------------"
- #Close
- cursor.close()
- db.commit()
- db.close()
3) 테스트
아래와 같이 실행하면 test.db가 생성되어 있음을 확인하실 수 있습니다.
해당 사이트에서 문서 페이지를 읽어 보시면 보다 세부적인 기능과 상세한 사용법을 확인하실 수 있습니다. 사용한 con_data.py외 test.xml은 압축하여 첨부하였습니다. 테스트 시에는 터미널에서 chmod +x ./con_data.py로 실행권한을 설정하셔야 합니다.
'기타 > 자잘한 Tip' 카테고리의 다른 글
특정 날짜 요일 구하기 (0) | 2012.02.04 |
---|---|
sqlite3에서 csv import/export (0) | 2009.08.26 |
Python에서 sqlite3 사용하기 (1) | 2009.08.26 |
텍스트파일 문자셋 변환 스크립트 (6) | 2008.08.25 |
Xcode에서의 Ruby on Rails (8) | 2008.08.20 |