다양한 데이터 읽기 - XML/JSON 파일
5. 다양한 데이터 읽기 - XML/JSON 파일¶
5.1. 다양한 데이터 읽기 - XML 파일¶
- XML(Extensible Markup Language)
- 특정 목적에 따라 데이터를 태그로 감싸서 마크업하는 범용적인 포멧
- 마크업 언어는 태그 등을 이용하여 데이터의 구조를 기술하는 언어의 한 가지
- 가장 친숙한 마크업 언어가 HTML
- XML은 HTML과 마찬가지로 데이터를 계층 구조로 표현
- XML 기본 구조
<태그 속성="속성값">내용
- 태그와 속성은 특정 목적에 따라 임의로 이름을 정해서 사용
- 다른 요소와 그룹으로 묶을 수도 있음
- XML 포멧 데이터 읽고, 파싱하기
- XML 포멧 데이터는 BeautifulSoup으로 HTML과 동일하게 읽고, 파싱할 수 있음
- 이외에 XML 을 다루기 위해 ElementTree 라이브러리를 활용할 수도 있음
- html.parser 파서 이외에 XML 파싱을 위해 lxml 파서를 사용할 수도 있음
- 예) 기상청 날씨 정보 XML 포멧 데이터 읽고, 파싱하기
- RSS 정보 링크를 확인해서 직접 크롤링: http://www.kma.go.kr/weather/lifenindustry/sevice_rss.jsp
- 서울, 경기도 날씨 정보: http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=109
다음과 같이 출력 : 도시별 가장 시간대가 빠른 때의 기상예측 --------- 서울: 구름조금 인천: 구름조금 ---------
다음 셀에 다음 코드를 넣고 다음 마지막 문장을 입력하여 코드를 완성하시오 from bs4 import BeautifulSoup import requests import datetime import jsoninfo_url = 'http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=109' response = requests.get(info_url) soup = BeautifulSoup(response.content, 'lxml')
locations = soup.find_all('location') for location in locations: [----------------------------------------------------------------------]
from bs4 import BeautifulSoup
import requests
import datetime
import json
info_url = 'http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=109'
response = requests.get(info_url)
soup = BeautifulSoup(response.content, 'html.parser')
locations = soup.find_all('location')
for location in locations:
print(location.find('city').text, ":", location.find('wf').text)
사용 데이터: http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108
- https://www.data.go.kr/dataset/3050988/openapi.do 에서 아파트매매 실거래자료 API 권한을 신청하고,
- 다음 지역/계약월 XML 데이터를 수신받아서, pandas DataFrame 으로 만들어 출력
- 지역: 서울특별시 양천구
- 계약월: 201708
- 지역: 서울특별시 양천구
- pandas DataFrame 컬럼명
'거래금액', '년', '법정동', '아파트', '월', '일', '전용면적', '지번', '지역코드', '층'
5.2. 다양한 데이터 읽기 - JSON 파일¶
day1_data_science_crawling.ipynb 파일의 3.2. Open API(Rest API)를 활용한 초간단 크롤링 실습 예제 코드 참고
JavaScript Object Notation 줄임말
웹환경에서 서버와 클라이언트 사이에 데이터를 주고 받을때 많이 사용
- Rest API가 주요한 예제
JSON 포멧 예
{ "id":"01", "language": "Java", "edition": "third", "author": "Herbert Schildt" }
출처: http://dpug.tistory.com/67#.WbycWshJaUk [퍼그의 전초기지]
from bs4 import BeautifulSoup
import requests
import datetime
import json
info_url = 'http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=109'
response = requests.get(info_url)
soup = BeautifulSoup(response.content, 'html.parser')
locations = soup.find_all('location')
for location in locations:
print(location.find('city').text, ":", location.find('wf').text)
사용 데이터: http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108
- https://www.data.go.kr/dataset/3050988/openapi.do 에서 아파트매매 실거래자료 API 권한을 신청하고,
- 다음 지역/계약월 XML 데이터를 수신받아서, pandas DataFrame 으로 만들어 출력
- 지역: 서울특별시 양천구
- 계약월: 201708
- 지역: 서울특별시 양천구
- pandas DataFrame 컬럼명
'거래금액', '년', '법정동', '아파트', '월', '일', '전용면적', '지번', '지역코드', '층'
5.2. 다양한 데이터 읽기 - JSON 파일¶
day1_data_science_crawling.ipynb 파일의 3.2. Open API(Rest API)를 활용한 초간단 크롤링 실습 예제 코드 참고
JavaScript Object Notation 줄임말
웹환경에서 서버와 클라이언트 사이에 데이터를 주고 받을때 많이 사용
- Rest API가 주요한 예제
JSON 포멧 예
{ "id":"01", "language": "Java", "edition": "third", "author": "Herbert Schildt" }
출처: http://dpug.tistory.com/67#.WbycWshJaUk [퍼그의 전초기지]