web api를 사용하여 데이터 추출하기

2018. 3. 30. 17:54Python-이론/python-인공지능2

webAPI사용하기



지금까진 requests, urllib, selenium, phantomjs등을 사용해서 외부의 데이터들을 스크래핑해왔습니다. 오늘 해볼 것은 웹페이지에서 완전히 제공해주는 API를 사용하여 데이터를 가져올 것입니다. 웹사이트에서는 왜 API를 제공하는 것일 까요??? 그 이유는 많은 사람들이 웹페이지에 크롤링하면 서버에 과부화가 될 수 있기 때문에 차라리 크롤링을 할 거면 API를 제공하여 서버에 부담을 줄일려고 만든 것입니다. 또한 유료로 파는 API도 많은데 이를 통해서 이득도 많이 얻을 수 있습니다. 그래서 오늘은 날씨정보를 가져올 수 있는 OpenWeatherMap API를 사용해보겠습니다.


날씨 API


회원 가입 후 api키를 받으면 됩니다.



이 api는 유료 버전도 있지만 배포할 것이 아니라면 무료버전도 충분합니다. 1분에 60번 호출 할 수 있습니다.


import requests
import json

apiKey= "a6c578487d31e2eb09e372b7fe494ad3"

cities = ["Seoul,KR","Tokyo,JP","New York,US"]

api = "http://api.openweathermap.org/data/2.5/weather?q={city}&APPID={key}"

for name in cities:
    url = api.format(city=name, key=apiKey)
    r= requests.get(url)
    data = json.loads(r.text)
    print("+ 도시 =",data["name"])
    print("| 날씨 =",data["weather"][0]["description"])
    print("| 최저기온=", data["main"]["temp_min"])
    print("| 최고기온=", data["main"]["temp_max"])


결과물


현재는 api의 제공기능 중 일부만 사용했지만 필요한 데이터를 호출해서 사용하면된다.