XML
XML은 eXtensible Markup Language의 약자로, 다음과 같은 계층 구조로 이루어져 있습니다. HTML과 비슷하지만 원하는 이름의 태그를 만들 수 있다는 특징이 있고, HTML 보다 문법 오류를 더 엄격하게 다룹니다.
다음과 같은 함수를 활용하면 XML에 접근해 원하는 데이터를 추출할 수 있습니다.
조금 더 복잡하지만 XML의 구조를 이해하고 있으면 다음과 같이 반복문을 활용해 XML의 데이터에 접근할 수도 있습니다.
<person>
<name>Chuck</name>
<phone type="intl">
+1 734 303 4456
</phone>
<email hide="yes"/>
</person>
tree = ET.fromstring(data)
print('Name:',tree.find('name').text)
print('Attr:'.tree.find('email').get('hide'))
#Name: Chuck
#Attr: yes
#예제
import xml.etree.ElementTree as ET
input ='''
<stuff>
<users>
<user x ="2">
<id>001</id>
<name>Chuck</name>
</user>
<user x ="7">
<id>009</id>
<name>Brent</name>
</user>
</users>
</stuff>'''
stuff = ET.fromsting(input)
lst = stuff.findall('users/user')
print('User count:', len(lst))
for item in lst:
print('Name', item.find('name').text)
print('ID', item.find('id').text)
print('Attribute', item.get("x"))
User count: 2
#Name Chuck
#ID 001
#Attribute 2
#Name Brent
#ID 009
#Attribute 7
JSON(JavaScript Object Notation)
JSON은 XML보다 더 자주 사용되는 데이터 포맷입니다. 이 코드는 XML로 실행했던 것과 정확히 같은 내용의 코드입니다.
데이터가 XML 형식에서 JSON 형식으로 바뀐 것을 제외하면 말입니다.
JSON은 파이썬에서의 딕셔너리와 굉장히 비슷하기 때문에 데이터를 읽어온 후 딕셔너리로 접근할 수 있습니다.
import json
data = '''{
"name" : "Chuck",
"phone" : {
"type" : "intl",
"number" : "+1 734 303 4456"
},
"email":{
"hide" : "yes"
}
}'''
info = json.loads(data)
print('Name:',info["name"])
print('Hide:',info["email"]["hide"])
#Name: Chuck
#Hide: yes
import json
data = '''[
{"id" : "001",
"x":"2",
"name":"Chuck"
},
{"id" : "009",
"x":"7",
"name":"Chuck"
}
]'''
info = json.loads(data)
print(info)
print('User count:', len(info))
for item in info:
print('Name', item['name'])
print('Id', item['id'])
print('Attribute', item['x'])
#[{'id':'001', 'x':'2', 'name':'Chuck'}, {'id':'009','x':'7','name':'Chuck'}]
#User count: 2
#Name Chuck
#Id 001
#Attribute 2
#Name Chuck
#Id 009
#Attribute 7
SOA(Service Oriented Architecture)
서비스 지향 아키텍처란 대규모 컴퓨터 시스템을 구축할 때의 개념으로 업무상에 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하여 그 서비스를 네트워크 상에 연동하여 시스템 전체를 구축해 나가는 방법론이다.
구글 API
구글 API를 활용해 다음과 같이 데이터를 읽어올 수 있다.
import urllib.request, urllib.parse, urllib.error
import json
serviceurl = 'http://maps.googleapis.com/maps/api/geocode/json?'
while True:
address = input('Enter location:')
if len(address) < 1:break
url = serviceurl + urllib.parse.urlencode({'address':address})
print('Retrieving',url)
uh = urllib.request.urlopen(url)
data=uh.read().decode()
print('Retrieved', len(data), 'characters')
try:
js=json.loads(data)
except:
js=None
if not js or 'status' not in jo or js['status']!='OK':
print('====Failure To Retrieve====')
print(data)
continue
lat = js["results"][0]["geometry"]["location"]["lat"]
lng = js["results"][0]["geometry"]["location"]["lng"]
print('lat', lat, 'lng', lng)
location = js['results'][0]['formatted_address']
print(location)
트위터 API
트위터에서 개인 키를 발급받으면 트위터 API를 활용할 수 있습니다.
hidden.py 파일의 return 부분에 발급받은 키(4종류)를 입력하면 트위터 API를 활용할 수 있게 됩니다.
#Keep this file separate
#https://apps.twitter.com/
#Create new App and get the four strings
def oauth():
return {"consumer_key":"h7Lu...Ng",
"consumer_secret":"dNKne",
"token_key":"122222000000",
"token_secret":"H012231313"}
'마케팅 > 데이터분석(파이썬)' 카테고리의 다른 글
[ADSP 준비] 1장 데이터의 이해 - 데이터와 정보 (0) | 2022.05.27 |
---|---|
(파이썬/python) 모두를 위한 프로그래밍 : 파이썬 챕터 14 / 파이썬 객체 (0) | 2021.11.27 |
(파이썬/python) 모두를 위한 프로그래밍 : 파이썬 챕터 12 / HTTP (0) | 2021.11.24 |
(파이썬/python) 모두를 위한 프로그래밍 : 파이썬 챕터 11 / 정규식 (0) | 2021.11.22 |
(파이썬/python) 모두를 위한 프로그래밍 : 파이썬 챕터 10 / 튜플 (0) | 2021.11.18 |