일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 엑셀프로젝트종료일
- 마약같은사랑
- workday.intl함수
- VLOOKUP중복합계
- 아가능부회애니
- 명중주정아애니
- 파이썬
- 엑셀workday
- 엑셀 지도차트
- 엑셀근로일수
- 단축키
- sumif
- 엑셀
- 이코노미스트
- 엑셀 거품형도표
- 엑셀함수
- 공의존이란
- 대만드라마
- codependency
- 다른시트자동합계
- 근로일수계산
- 엑셀 거품형차트
- networkdays함수
- 대드
- VLOOKUP안될때
- 엑셀 움직이는 원형 차트
- 공의존
- 공의존성격
- SUMIF함수개념
- 일요일만쉬는회사
- Today
- Total
내가 배우는 이야기
[파이썬독학] API - 1. XML, JSON 파이썬에서 활용하기 본문
< 파이썬 독학하기 - API >
이번 프로젝트에서 API를 가져다 써야했는데 기본개념이 정리가 안 돼서 많이 헤맸다.
여러 문서들과 인터넷을 떠돌며 배운 개념들을 정리해보려고 한다.
웹에서 데이터를 끌어다 쓸 때에는 XML(eXtensible Markup Language)과 JSON(JavaScript Object Notation) 포맷을 사용한다.
xml은 왠지 이름에서 느껴지듯 Html과 비슷한 구조로 되어있는 문서로, 상대적으로 보기 쉬운 구조를 갖고 있다. JSON은 파이썬의 리스트, 딕셔너리 형과 매우 비슷하고 형태가 간단하다.
먼저 XML과 JSON을 차례로 살펴보고 Open API를 파이썬에서 활용하는 방법을 다루어보겠다.
1. XML 활용 기초
[1] XML 문서의 예
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <response> <users> <user x = '1'> <id>1</id> <name>You</name> <nation>Korea</nation> </user> <user x = '2'> <id>2</id> <name>John</name> <nation>UK</nation> </user> </users> </response> |
HTML파일이 <html>안에 <head></head>, <body></body>가 있고 </html>로 닫아주는 것 처럼 XML은 HTML과 비슷한 느낌이 난다.
[2] XML 파싱 및 활용
파싱 후 파이썬의 [] (인덱스 연산자)를 사용해 데이터를 추출할 수 있다.
<예제 1>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # ex1_xml.py import xml.etree.ElementTree as ET data =''' <nation> <name>Korea</name> <capital>Seoul</capital> <code type="intl"> +82 </code> <info hide="yes"/> </nation>''' tree = ET.fromstring(data) print('Name: ', tree.find('name').text) print('Capital city: ', tree.find('capital').text) print('Code: ', tree.find('code').text) print('Others: ', tree.find('info').get('hide')) | cs |
<결과화면>
fromstring()
: 문자열에서 Element로 XML을 파싱
: XML 데이터를 꺼내쓰려면 트리 형태여야한다. fromstring()이 트리로 변환시켜준다.
find()
: XML 트리를 돌면서 값을 찾아준다.
: 각 노드는 텍스트나, hide같은 속성 그리고 자식 노드를 가질 수 있다.
<예제 2>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # ex2_xml.py import xml.etree.ElementTree as ET input = ''' <world> <nations> <nation x = '1'> <id>001</id> <name>Korea</name> <capital>Seoul</capital> </nation> <nation x = '2'> <id>002</id> <name>Taiwan</name> <capital>Taipei</capital> </nation> </nations> </world>''' stuff = ET.fromstring(input) # XML을 읽을 수 있게 트리형태로 변환 lst = stuff.findall('nations/nation') # XML트리에서 nations/nation안의 subtrees를 불러온다 print('The number of nations:', len(lst)) # nation이 몇 개인지 출력 # nation 노드를 하나하나 돌리면서 name, id, capital을 출력하고 nation노드에서 속성 x를 출력 for item in lst: print('Name', item.find('name').text) print('Id', item.find('id').text) print('Capital city', item.find('capital').text) print('Attribute', item.get("x")) | cs |
예제 1과 비슷하나 이번에는 국가 노드가 한 개가 아니라 여러 개 일 경우이다. for문으로 노드를 돌리면서 출력한다.
2. JSON 활용 기초
[1] JSON 문서의 예
1 2 3 | {"name" : "Korea", "capital" : "Seoul", "code" : {"type" : "intl", "number" : "+82"}, "info" : {"hide" : "yes"}} | cs |
파이썬의 딕셔너리처럼 키와 값이 들어있다.
[2] JSON 파싱 및 활용
<예제 1>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import json data = ''' [ { "id" : "001", "x" : "1", "name" : "Korea", "capital" : "Seoul" }, { "id" : "002", "x" : "2", "name" : "Taiwan", "capital" : "Taipei" } ]''' info = json.loads(data) print('User count:', len(info)) for item in info: print('Name: ', item['name']) print('Id: ', item['id']) print('Capital city: ', item['capital']) print('Attribute: ', item['x']) | cs |
<결과화면>
: XML 예제2번과 동일한 결과를 얻는다.
json.loads(data)
: JSON 문서를 리스트/딕셔너리 형으로 불러들인다.
데이터를 파싱하고 추출하는 코드는 JSON을 사용했을 때 더 간결하고 직관적이다. 간결함 때문에 요즘은 JSON을 사용하는 추세라고 한다.
다음 단계는 XML이나 JSON을 사용해서 프로그램간 데이터를 주고 받는 것이다. 이를 API(Application Program Interface)라 하는데 다음 포스팅에서는 JSON형의 API를 파이썬에 활용해보겠다.
'로봇화 > PYTHON 파이썬' 카테고리의 다른 글
Pillow 설치하기 (0) | 2018.12.12 |
---|---|
[파이썬] Selenium으로 구글 크롤링 로그인 하는법 (1) | 2018.04.24 |
[파이썬] 맥OS pip 설치하기 (1) | 2018.04.21 |
[파이썬 예제] 시간간격 두고 인터넷 창 띄우기 (0) | 2018.04.10 |
[파이썬] How to run Python3 in Atom editor (0) | 2018.02.22 |