나1!!!! 와쪄 흥
Open API란?
- Open Application Programing Interface
- 누구나 사용할 수 있도록 공개된 API
컴공 관련 학생들은 대부분 데이터 처리를 해봤을 텐데, 오늘은 이 open api 사용법을 파보려고 한다.
대부분 이 사이트를 사용하는데 나는 이번 학기 빅데이터 프젝에 사용할 스마트팜 api를 활용해보려고 한다.
https://data.smartfarmkorea.net/openApi/openApiList.do?menuId=M060502#con
Open API 신청
일단 들어가서 Open API 신청을 한다. 체감상 신청하고 일주일 정도 걸린 것 같다.
이렇게 하면, 서비스키가 문자로도 오고 신청확인에 정보 입력하고 들어가면 볼 수 있다
서비스키는 openAPI의 비밀번호 쯤 된다
종류에 따라서 서비스키가 필수인데도 있고 그냥 풀린데도 잇음. 오픈API닫힘 푸히힣ㄱ
데이터 확인
두가지 방법이 있다.
1. 기술 문서를 다운해서 보기
2. 그냥 메인 화면에 뜬 목록 보기
개인적으로 기술문서를 더럽게 어렵게 써놔서(그리고 좀 꼴보기 싫음) 메인화면에 뜬 거 보고 해도 노상관일 듯하다.
Open API 사용하기
본인이 어떤 정보를 원하는지 확실하게 정하고 가야 한다.
나는 전국의 딸기 생육 정보 데이터를 얻고 싶다
1. open API 요청인자를 본다.
- 보면 serviceKey와 userId, croppingSerINO가 필수 키다.
- serviceKey는 api 신청했을 때 만든 거임
(+)
참고로 저거 어디다 쓰냐면 링크에다가 붙여쓰면 된다.
- 중괄호 된 부분 지우고 해당 값 넣으면 됨.
- startDate랑 endDate는 필수 아니니까 안 넣어도 되겠쮸?
2. 요청인자를 찾는다.
- userId, croppingSerINO만 찾으면 됨
- 대충 오페레이션 목록보면서 출력항목에서 뒤지면 됨
- 만약 저런거 없으면 기술문서에서 112 찾아야 됨ㅋ
3. userId 먼저 찾읍시다
- userId SAMPLE URL에서 링크를 복사
- 저기 서비스 키 부분만 받은 서비스키로 붙여넣기하면 됨
- 그럼 이케 뜸
여.기.서!!!!!!!!!!!!! 딩동댕
크롬 말고 파이어폭스에서 열면 대게 이쁘게 나옵니당
그리고 별도의 코드 필요없이 바로 JSON파일로 저장가능 ㅇㅇㅇㅇ (이거 알려주신 IAM의 최오빠 감삽니당!!!)
(+) 코드로 JSON파일 다루기
- JSON파일 열고 CSV로 저장하기
import json
file = open('tlqkf.json')
tlqkffile = json.load(file)
tlqkffile.to_csv('farmInfo.csv', columns=['statusCode', 'statusMessage', 'userId', 'facilityId', 'addressName', 'itemCode'], index=False)
- JSON파일 열고 CSV로 저장하기2
### json 파일을 csv파일로 변환 후 내보내기
import pandas as pd
file = pd.read_json('tlqkf.json')
file.to_csv('farmInfo.csv', columns=['statusCode', 'statusMessage', 'userId', 'facilityId', 'addressName', 'itemCode'], index=False, encoding="euc=kr")
- 코드에서 사용해보기
tlqkffile[125]
- 코드에서 사용해보기2
tlqkffile.get("addressName")
4. croppingSerINO 찾기
- croppingSerINO는 서비스키와 userId를 필수 요청인자로 받는다
- 수많은 농가들의 userId를 수작업으로 수집하는 건 말이 안 되므로 코드를 짠다
import requests
import pandas as pd
url = "http://www.smartfarmkorea.net/Agree_WS/webservices/ProvideRestService/getCroppingSeasonDataList/" # 작기정보 url
service_key = 여러분의 service key
# 농가 id 가져오기
idInfo = pd.read_csv('farmInfo.csv', encoding="euc-kr")
cropDF = pd.DataFrame()
for i in range(len(idDF)):
id = idInfo['userId'][i] # userId만 필요하니까
data = requests.get(url+service_key+id).json() # 웹페이지에서 json 데이터 가져오기
dataToDF = pd.DataFrame(data) # json을 데이터 프레임으로 변경
cropDF = cropDF.append(dataToDF) # cropDF에 추가
# 엑셀로 내보내기
cropDF.to_csv("cropInfo.csv", encoding="euc-kr")
- 간단하쥬? 참고로 전 셀레니움으로 한다고 깝치다고 하루날림.. IAM의 최선배에 따르면 셀레니움은 더럽게 느리니까 항상 최후의 최후의 최후의 수단으로 쓰라고 하십니다. 메모장에 적으세요...ㅜㅜㅜ
- 한 9분 정도 지나면 크롤링 끗~
- 쨔잔~
자 이제 userId랑 croppingSerINO를 얻었으니 어케 데이터 수집해야하는지 감이 오시죵???
끗~
'짜투리' 카테고리의 다른 글
[한글/word] word에서 ctrl+c해서 한글로 ctrl+v가 안대요우ㅜ (0) | 2022.11.21 |
---|---|
[노션] 페이지 이동했는데 해당 위치에 페이지가 없을 때 (0) | 2022.10.18 |
[OpenRefine] 강력한 데이터 분석 도구 (0) | 2022.09.20 |
[라즈베리파이3/RaspberryPI3] 라즈베리파이 설치! 자퇴보다 쉽다! (0) | 2022.06.29 |
[컴퓨터 보안] 비대칭 암호화 알고리즘- 공개키와 개인키 간단한 실습! (0) | 2022.06.17 |