입문자를 위한 파이썬 기초 #11. Json 웹 데이터 처리하기
첫 API
파이썬의 기본 입출력과 배운 딕셔너리 자료형을 가지고 API을 사용해 도메인 주소 혹 IP를 전달하면 도메인 서버에 대한 서버의 위치, 상태, 경도 위도 등을 출력하는 프로그램을 만들 것이다.
- API : Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 도메인 : 네트워크상에서 컴퓨터를 식별하는 호스트명을 가리키며, 좁은 의미에서는 도메인 레지스트리에게서 등록된 이름이다. 통틀어 웹 주소로 부른다.
- IP : 인터넷 상에 있는 컴퓨터의 고유한 주소
첫 사용할 API는 IP 주소나 도메인 이름을 위치 정보로 바꿔주는 서비스다.
http://ip-api.com/json/naver.com로 조회하면 다음과 같이 결과를 출력한다. 단, naver.com의 서버는 여러개이므로 약간씩은 다른 정보가 출력될 수 있다.
만약 보안 기능이 추가된 https://- 로 조회하면 인증과정이 필요해 올바로 API 사용을 할 수 없다.
JSON 웹 데이터 처리
파이썬을 사용해 직접 위 API로 데이터를 넣어 결과를 가져오는 프로그램을 만들어보자. 프로그램에는 다음 두 라이브러리를 사용한다. (라이브러리 : 일종의 도서관, 누군가 미리 함수를 정의해 import로 꺼내오는 외장함수 개념. import를 사용해 불러온다.)
- requests : 웹 통신을 위해 사용하는 라이브러리
- json : json 데이터 처리를 위해 사용하는 라이브러리
만들어진 프로그램은 다음과 같다.
import requests
import json
domain_name = input('domain_name: ')
url = "http://ip-api.com/json/" + domain_name
response = requests.get(url)
dict1 = json.loads(response.text)
for i in dict1.keys():
print(i, ':', dict1[i])
먼저 사용하는 두 라이브러리를 불러온다.
import requests
import json
조회하고 싶은 도메인 정보를 위해 도메인 정보를 입력받아 API 서비스 뒤 부분에 붙인다.
domain_name = input('domain_name: ')
url = "http://ip-api.com/json/" + domain_name
url 의 페이지를 가져와 response에 넣고 dict1에 응답 결과를 텍스트로 받아와 json 형식으로 변환한다.
response = requests.get(url)
dict1 = json.loads(response.text)
각 키를 하나씩 가져와 딕셔너리의 키로 값을 가져온다고 일단 알아두자. 차후 반복문에서 내용을 다룬다.
for i in dict1.keys():
print(i, ':', dict1[i])
결과 확인
프로그램을 실행하면 입력한 도메인 정보에 따라 다음과 같이 결과를 처리한다.