기상청 사이트 이외에도 다양한 api 또는 RSS 정보를 제공하는 곳들이 다수 있다.
공공데이터 활용이 가능하거나, 정보 제공사이트 등에서 무료로 서비스 하는 정보를 개발자 들이 사용할 수 있게 제공하는 곳이 다수 있기 때문에 관련 내용을 참고해 보는 것이 좋다.
RSS는 참고로 Really Simple Syndication, Rich Site Summary로 정보를 XML 형태로 제공하여 쉽게 원하는 정보만 가지고 수정할 수 있도록 제공해주는 서비스이다.
기상청 아래 사이트에 가면 RSS 정보를 사용할 수 있는 URL을 준다.
ㅇ 기상청 RSS 서비스
ㅇ RSS로 제공 받을 수 있는 XML
- XML은 Extensible Markup Language로 다른 많은 종류의 데이터를 기술하는 데 사용할 수 있다. 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하는 용도로 사용한다. json 형식과 함께 많이 사용되는 데이터 형식이다.
기상청 RSS 활용 웹 크롤러
- RSS는 url에 접근하면 xml 형태의 데이터가 있기 때문에 해당 url에서 requests로 코드를 가져와서 원하는 정보만 추려서 사용할 수 있다.
- <사용자정의태그></사용자정의태그>의 형태로 만들어 져 있기 때문에 BeautifulSoup을 사용하는 경우 사용자 정의 태그로 접근해서 정보를 가져올 수 있다.
- 태그로 접근 한 뒤 원하는 정보만 그룹으로 가져오기 위해서 re.findall 정규표현식을 사용하면 된다.
- 지금은 화면에 출력하는 형태로만 작업하였지만 DB에 바로 연동할 수도 있고, 필요에 따라서는 ,(콤마) 같은 구분자로 출력 후 엑셀에서 구분자로 분리하여 데이터화 하여 사용할 수도 있다.
import re
import requests
from bs4 import BeautifulSoup
url = 'http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108'
html = requests.get(url)
bs_html = BeautifulSoup(html.content,'html.parser')
location = bs_html.find_all('location')
for l in location:
city = l.find('city').text
print(city)
w_list = re.findall('<data>.+?<tmef>(.+?)</tmef>.+?<wf>(.+?)</wf>.+?<tmn>(.+?)</tmn>.+?<tmx>(.+?)</tmx>\n<reliability>(.+?)</reliability>\n</data>',str(l),re.DOTALL)
i = 1
for w in w_list:
print(w[0],w[1],w[2],w[3],w[4])
print('-'*30)
(결과값)
반응형
'Python > 파이썬 크롤링 예' 카테고리의 다른 글
파이썬 웹 크롤러 : 네이버 이미지 검색 저장 프로그램 (0) | 2019.05.10 |
---|---|
파이썬 웹 크롤러 만들기 : 네이버 웹툰 전체 썸네일(이미지) 저장 (0) | 2019.05.09 |
파이썬 웹 크롤러 만들기 : 네이버 뉴스 가져오기 (0) | 2019.05.09 |
댓글