7. 웹 API를 이용한 크롤링


파이썬을 이용한 머신러닝, 딥러닝 실전개발 입문

파이썬을 이용한 머신러닝, 딥러닝 실전개발 입문](http://wikibook.co.kr/python-machine-learning/) 책과 강의를 바탕으로한 코드 리뷰 및 정리입니다. 자세한 내용은 책과 강의를 참고해주세요.


2. 고급 스크레이핑

2-3. 웹 API로 데이터 추출하기


웹 API
  • 어떤 사이트가 가지고 있는 기능을 외부에서도 쉽게 사용할 수 있게 공개한 것 (= 웹에 공개된 데이터 : OpenAPI)

    image

  • XML , JSON 형식의 데이터를 쉽게 처리할 수 있음


웹 API를 사용해보기 - OpenWeatherMap의 날씨 정보
  • http://openweathermap.org

  • [sign up] 을 눌러 가입을 한 후 [API keys] 탭에서 API키를 확인할 수 있다.

    import requests
    import json
      
    #API키를 지정한다. 
    apikey="46301d0111991e197561e9a50eb87d7b"
      
    #날씨를 확인할 도시 지정
    cities=["Seoul,KR","Tokyo,JP", "New York,US"]
      
    #API지정
    api="http://api.openweathermap.org/data2.5/weather?q={city}&APPID={key}"
      
    #K->C 함수
    k2c=lambda k:k-273.15
      
    #각 도시정보 추출
    for name in cities:
        #API의 url 구성
        url=api.format(city=name,key=apikey)
        #API에 요청을 보내 데이터 추출
        r=requests.get(url)
        print(r.text)
        #결과를 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로 불러온 데이터 양식이다. 아래에서 추출하고 싶은 데이터만 추출해 오면 된다.

    {
    	"coord":{"lon":126.98,"lat":37.57},
    	"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"}],
    	"base":"stations",
    	"main":{"temp":296.59,"pressure":1018,"humidity":31,"temp_min":295.15,"temp_max":297.15},
    	"visibility":10000,
    	"wind":{"speed":2.1,"deg":10},
    	"clouds":{"all":20},"dt":1538026200,
    	"sys":{"type":1,"id":7668,"message":0.0067,"country":"KR","sunrise":1537997032,"sunset":1538040108},
    	"id":1835848,
    	"name":"Seoul",
    	"cod":200
    }
    


국내에서 사용할 수 있는 웹 API
  • http://www.apistore.co.kr/api/apiList.do
  • http://mashup.or.kr/business/main/main.do

네이버, 카카오 개발자 센터

  • https://developers.naver.com/main
  • https://developers.kakao.com/

쇼핑정보

  • http://api.danawa.com/main/index.html
  • http://developer.auction.co.kr/

주소전환

  • http://www.juso.go.kr/openIndexPage.do
  • http://biz.epost.go.kr/customCenter/custom/custom_9.jsp?subGugun=sub_3&subGubun_1=cum_17&gubun=m07

HTML Parsing 시 주의점

어떠한 주소 / robots.txt : 이 사이트에서 얘기하는 이런거는 가져가 주시지 말라는 걸 적어놓음.

ex) http://www.naver.com/robots.txt

User-agent: *
Disallow: /
Allow : /$ 


ex)http://www.yes24.com/robots.txt

User-agent: *
Disallow: /templates/
Disallow: /member/
Allow: /

User-agent: Googlebot
Disallow: /*.pdf$

User-agent: AhrefsBot
Disallow: /
User-agent: MJ12bot
Disallow: /
User-agent: SemrushBot
Disallow: /
User-agent: Baiduspider
Disallow: /
User-agent: Ezooms
Disallow: /
User-agent: YandexBot
Disallow: /
User-agent: ltx71
Disallow: /

데이터를 수집하는 것에 대한 법적인 문제가 없는지 검토 필요.





© 2018. by yeo0

Powered by yeo0