[python] 19. python Open API 와 JSON
1. Open API(Application Programming Interface)
- 여러 애플리케이션 사이에서 간편한 인터페이스
2. Open API - 주로 웹 API또는 API라고 함
- HTTP를 통해 데이터를 요청하며 주로 XML 이나 JSON 형식으로 응답
- 최근에는 JSON 방식의 응답을 하는 API가 빠르게 늘어나고 있음
- 유용한 형식으로 정리된 데이터를 제공 받을 수 있음
3. API의 동작 방식
- 브라우저에서 API요청
> http://api.github.com/
> JSON으로 응답이 옵니다.
4. JSON 요청 및 처리
1) Requests 모듈 - GET 요청
- HTTP 요청 클라이언트 모듈
- Python 내장 모듈이 urllib 에 쉽고 편리하게 사용 가능
- pip install requests 로 설치 후 사용
- Get 방식 요청은 requests 모듈의 get()함수를 사용 한다.
# 네이버 검색 Open API 예제
Ex) 예제 코드1
- git hub 계정 정보 가져오는 예제
import requests
res = requests.get('https://api.github.com/users/chun4foryou')
print(res.text)
Ex) 예제 코드
- 네이버 검색하는 예제
import requests
import pprint
headers = {
'X-Naver-Client-Id': 'YOUR_CLIENT_ID','X-Naver-Client-Secret': 'YOUR_CLIENT_SECRET'
}
payload = {
'query': '파이썬',
'display': '10'
}
url = 'https://openapi.naver.com/v1/search/blog.json'
res = requests.get(url, headers=headers, params=payload)
pprint.pprint(res.json())
2) Requests 모듈 - POST 요청
# 네이버 번역 Open API 예제
(1) 동작 방식
- post 방식으로 요청을 해야한다.
- POST 방식 요청은 requests 모듈의 Request 객체를 사용 한다.
(2) request 모듈로 POST 요청 하기
가. 요청 객체를 미리 만들어준다.
>> req = Request('POST', url, data=payload, header=headers)
>> prepped = req.prepare()
나. 세션을 통하여 요청을 보낸다.
>> s = Session()
>> res = s.send(prepped)
from requests import Request
from requests import Session
import pprint
s = Session()
headers = {
'X-Naver-Client-Id': 'YOUR Client ID',
'X-Naver-Client-Secret': 'YOUR Clinet Secret'
}
text = "yesterday all my trouble seemd so far away"
payload = {
'source': 'en',
'target': 'ko',
'text': text
}
url = 'https://openapi.naver.com/v1/papago/n2mt'
req = Request('POST', url, data=payload, headers=headers)
prepped = req.prepare()
res = s.send(prepped)
pprint.pprint(res.json())
5. 에러 처리
1. 에러 - AttributeError: module 'requests' has no attribute 'get'
- 언제 발생 하는가?
> python 파일 이름이 requests.py 일때 발생한다.
> 결론 파일 이름만 변경 해주면 됩니다.
D:\jk_git\python3\hello\venv\Scripts\python.exe D:/jk_git/python3/hello/requests.py
Traceback (most recent call last):
File "D:/jk_git/python3/hello/requests.py", line 3, in <module>
import requests
File "D:\jk_git\python3\hello\requests.py", line 5, in <module>
res = requests.get('https://api.github.com/users/chun4foryou')
AttributeError: module 'requests' has no attribute 'get'
'ProgrammingLang > python' 카테고리의 다른 글
[python] 21. 날짜 다루기, 프로세스(subprocess) 실행 (0) | 2018.11.27 |
---|---|
[python] 20. scraper (0) | 2018.11.27 |
[python] 18. CSV 파일 다루기 (0) | 2018.11.22 |
[python] 17. python으로 엑셀 다루기 (7) | 2018.11.22 |
[python] 16. class 와 객체 (0) | 2018.11.21 |