다양한 데이터 읽기 - XML/JSON 파일
이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 강의 사이트와 유투브 채널을
오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
● 잔재미코딩 유투브 오픈
[구독해보기]
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
연습문제: XML 파싱
다음과 같이 출력 : 도시별 가장 시간대가 빠른 때의 기상예측 --------- 서울: 구름조금 인천: 구름조금 ---------
다음 셀에 다음 코드를 넣고 다음 마지막 문장을 입력하여 코드를 완성하시오 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: [----------------------------------------------------------------------]
In [19]:
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)
과제1: 전국 날씨 예측 데이터 도시별, 일자(오전,오후)별 pandas DataFrame 만들고, 출력하기
사용 데이터: http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108
사용 데이터: http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108
In [ ]:
과제2: 아파트매매 실거래자료 데이터 읽기
- 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 [퍼그의 전초기지]
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [19]:
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)
과제1: 전국 날씨 예측 데이터 도시별, 일자(오전,오후)별 pandas DataFrame 만들고, 출력하기
사용 데이터: http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108
사용 데이터: http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108
In [ ]:
과제2: 아파트매매 실거래자료 데이터 읽기
- 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 [퍼그의 전초기지]