Machine Learning
크롤링과 스크레이핑 - 웹 API로 데이터 추출
˙ᵕ˙
2020. 9. 19. 04:00
웹 API
-
웹 API는 어떤 사이트가 가지고 있는 기능을 외부에서도 쉽게 사용할 수 있게 공개한 것
-
서로 다른 프로그램이 기능을 공유할 수 있게 절차와 규약을 정의한 것
-
일반적으로 http 통신을 사용. 클라이언트가 api서버에 http 요청을 보내면 서버는 xml 또는 json 형식으로 응답
-
단점
-
웹 API가 없어지거나 사양변경이 일어날 수 있다
-
OpenWeatherMap의 날씨정보 API
-
회원 가입 후 api_key 확인
-
api document
-
도시 이름으로 api 사용하기
-
API가 리턴하는 데이터(서울)
import requests
import json
# API 키를 지정
apikey = "7a1529504be018224edb8b3c03cf3c7e"
# 날씨를 확인할 도시 지정하기
cities = ["Seoul,KR", "Tokyo,JP", "New York,US"]
# API 지정
api = "http://api.openweathermap.org/data/2.5/weather?q={city}&APPID={key}"
# 켈빈 온도를 섭씨 온도로 변환하는 함수
k2c = lambda k: k - 273.15
# 각 도시의 정보 추출하기
for name in cities:
# API의 URL 구성하기
url = api.format(city=name, key=apikey)
# API에 요청을 보내 데이터 추출하기
r = requests.get(url)
# 결과를 JSON 형식으로 변환하기
data = json.loads(r.text)
# 결과 출력하기
print("+ 도시 =", data["name"])
print("| 날씨 =", data["weather"][0]["description"])
print("| 최저 기온 =", k2c(data["main"]["temp_min"]))
print("| 최고 기온 =", k2c(data["main"]["temp_max"]))
print("| 습도 =", data["main"]["humidity"])
print("| 기압 =", data["main"]["pressure"])
print("| 풍향 =", data["wind"]["deg"])
print("| 풍속 =", data["wind"]["speed"])
print("")
웹 API 사이트