일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 에이블스쿨
- 기계학습
- cnn
- 하계인턴
- arima
- 빅데이터분석기사
- 머신러닝
- 프로그래머스
- kaggle
- Eda
- r
- 시계열
- 하둡
- ML
- 시각화
- python
- 다변량분석
- KT AIVLE
- 한국전자통신연구원 인턴
- 에이블러
- matplot
- 서평
- SQL
- hadoop
- 빅분기
- 딥러닝
- 웹크롤링
- KT 에이블스쿨
- 소셜네트워크분석
- ggplot2
- SQLD
- 지도학습
- httr
- kt aivle school
- ETRI
- dx
- 한국전자통신연구원
- Ai
- 에트리 인턴
- 가나다영
Archives
- Today
- Total
소품집
[파이썬을 이용한 웹 크롤링과 스크레이핑] XML(RSS) 스크레이핑 본문
728x90
XML 파서로 RSS에서 데이터를 스크레이핑해 봅시다.
RSS란?
블로그 또는 뉴스 사이트 등의 웹사이트는 변경 정보 등을 RSS라는 이름의 XML 형식으로 제공합니다. RSS는 XML을 기반으로 만들어졌으므로 HTML 보다 간단하게 파싱할 수 있습니다. 뉴스 사이트에서 최신 뉴스 URL와 제목을 추출하는 경우 등 스크레이핑하고 싶은 정보가 RSS로 제공되는 경우 어떻게 활용하면 되는지 살펴봅시다.
RSS 파싱하기
그럼 실제로 기상청에서 제공하고 있는 RSS를 살펴봅시다.
- 기상청 RSS
- http://www.kma.go.kr/weather/lifenundustry/service_rss.jsp
그럼 여기서 날씨와 시간 등의 정보를 추출해 보겠습니다. 날씨는 wf에 들어있으며, 기온은 tmn, 최고 기온은 tmx, 시간은 wmEF라는 요소 내부에 적혀 있습니다.
파이썬의 표준 라이브러리에는 XML을 다루기 위한 모듈이 포함돼 있습니다. xml.etree.ElementTree가 사용하기 쉬우므로 이것을 사용해
보겠습니다.
예제 2.13에서는 ElementTree 모듈을 사용해 RSS를 파싱합니다.
www.weather.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=109
위 XML을 rss.xml라 저장하고, 작업창에 올려둡니다.
# ElementTree 모듈을 읽어 들입니다.
from xml.etree import ElementTree
# parse() 함수로 파일을 읽어 들이고 ElementTree 객체를 만듭니다.
tree = ElementTree.parse('rss.xml')
# getroot() 매서드로 XML의 루트 요소를 추출합니다.
root = tree.getroot()
#findall() 매서드로 요소 목록을 추출합니다.
# 태그를 찾습니다. (자세한 내용은 RSS를 열어 참고해주세요)
for item in root.findall('channel/item/description/body/location/data'):
# find() 매서드로 요소를 찾고 text 속성으로 값을 추출합니다.
tm_ef = item.find('tmEf').text
tmn = item.find('tmn').text
tmx = item.find('tmx').text
wf = item.find('wf').text
print(tm_ef, tmn, tmx, wf) # 출력합니다.
findall() 메서드 또는 find() 메서드는 매개변수로 XPath를 지정합니다.
예제 2.13을 저정하고 실행하면 다음과 같이 출력됩니다.
(scraping) dayeong@dayeong-ui-MacBookPro ~ % python scrape_rss.py
2021-05-07 00:00 13 19 구름많고 비
2021-05-07 12:00 13 19 맑음
2021-05-08 00:00 11 21 맑음
2021-05-08 12:00 11 21 맑음
2021-05-09 00:00 12 23 맑음
2021-05-09 12:00 12 23 맑음
2021-05-10 00:00 13 24 구름많음
2021-05-10 12:00 13 24 구름많음
2021-05-11 00:00 13 22 흐림
2021-05-11 12:00 13 22 흐림
2021-05-12 00:00 14 23 구름많음
2021-05-13 00:00 13 24 맑음
2021-05-14 00:00 13 24 구름많음
2021-05-07 00:00 13 17 구름많고 비
2021-05-07 12:00 13 17 맑음
2021-05-08 00:00 12 18 맑음
2021-05-08 12:00 12 18 맑음
2021-05-09 00:00 12 19 맑음
2021-05-09 12:00 12 19 맑음
2021-05-10 00:00 13 20 구름많음
2021-05-10 12:00 13 20 구름많음
2021-05-11 00:00 12 20 흐림
2021-05-11 12:00 12 20 흐림
2021-05-12 00:00 13 20 구름많음
2021-05-13 00:00 13 21 맑음
2021-05-14 00:00 14 21 구름많음
2021-05-07 00:00 11 20 구름많고 비
2021-05-07 12:00 11 20 맑음
2021-05-08 00:00 10 22 맑음
2021-05-08 12:00 10 22 맑음
2021-05-09 00:00 11 22 맑음
2021-05-09 12:00 11 22 맑음
2021-05-10 00:00 12 24 구름많음
2021-05-10 12:00 12 24 구름많음
2021-05-11 00:00 13 23 흐림
2021-05-11 12:00 13 23 흐림
2021-05-12 00:00 12 23 구름많음
2021-05-13 00:00 12 25 맑음
2021-05-14 00:00 12 24 구름많음
2021-05-07 00:00 9 19 구름많고 비
2021-05-07 12:00 9 19 맑음
2021-05-08 00:00 9 21 맑음
2021-05-08 12:00 9 21 맑음
2021-05-09 00:00 9 22 맑음
2021-05-09 12:00 9 22 맑음
2021-05-10 00:00 10 22 구름많음
2021-05-10 12:00 10 22 구름많음
2021-05-11 00:00 11 22 흐림
2021-05-11 12:00 11 22 흐림
2021-05-12 00:00 10 22 구름많음
2021-05-13 00:00 10 23 맑음
2021-05-14 00:00 11 24 구름많음
2021-05-07 00:00 9 21 구름많고 비
2021-05-07 12:00 9 21 맑음
2021-05-08 00:00 9 23 맑음
2021-05-08 12:00 9 23 맑음
2021-05-09 00:00 10 24 맑음
2021-05-09 12:00 10 24 맑음
2021-05-10 00:00 11 25 구름많음
2021-05-10 12:00 11 25 구름많음
2021-05-11 00:00 12 23 흐림
2021-05-11 12:00 12 23 흐림
2021-05-12 00:00 11 23 구름많음
2021-05-13 00:00 10 24 맑음
2021-05-14 00:00 10 25 구름많음
2021-05-07 00:00 11 21 구름많고 비
2021-05-07 12:00 11 21 맑음
2021-05-08 00:00 10 23 맑음
2021-05-08 12:00 10 23 맑음
2021-05-09 00:00 11 24 맑음
2021-05-09 12:00 11 24 맑음
2021-05-10 00:00 12 24 구름많음
2021-05-10 12:00 12 24 구름많음
2021-05-11 00:00 13 23 흐림
2021-05-11 12:00 13 23 흐림
2021-05-12 00:00 12 23 구름많음
2021-05-13 00:00 11 23 맑음
2021-05-14 00:00 12 26 구름많음
2021-05-07 00:00 11 17 구름많고 비
2021-05-07 12:00 11 17 맑음
2021-05-08 00:00 11 19 맑음
2021-05-08 12:00 11 19 맑음
2021-05-09 00:00 10 18 맑음
2021-05-09 12:00 10 18 맑음
2021-05-10 00:00 11 18 구름많음
2021-05-10 12:00 11 18 구름많음
2021-05-11 00:00 11 18 흐림
2021-05-11 12:00 11 18 흐림
2021-05-12 00:00 11 19 구름많음
2021-05-13 00:00 12 19 맑음
2021-05-14 00:00 12 20 구름많음
2021-05-07 00:00 11 19 구름많고 비
2021-05-07 12:00 11 19 맑음
2021-05-08 00:00 9 22 맑음
2021-05-08 12:00 9 22 맑음
2021-05-09 00:00 10 23 맑음
2021-05-09 12:00 10 23 맑음
2021-05-10 00:00 11 24 구름많음
2021-05-10 12:00 11 24 구름많음
2021-05-11 00:00 13 23 흐림
2021-05-11 12:00 13 23 흐림
2021-05-12 00:00 12 24 구름많음
2021-05-13 00:00 11 25 맑음
2021-05-14 00:00 11 26 구름많음
2021-05-07 00:00 14 18 구름많고 비
2021-05-07 12:00 14 18 맑음
2021-05-08 00:00 12 21 맑음
2021-05-08 12:00 12 21 맑음
2021-05-09 00:00 12 22 맑음
2021-05-09 12:00 12 22 맑음
2021-05-10 00:00 14 23 구름많음
2021-05-10 12:00 14 23 구름많음
2021-05-11 00:00 14 22 흐림
2021-05-11 12:00 14 22 흐림
2021-05-12 00:00 14 23 구름많음
2021-05-13 00:00 14 25 맑음
2021-05-14 00:00 12 25 구름많음
2021-05-07 00:00 10 17 구름많고 비
2021-05-07 12:00 10 17 맑음
2021-05-08 00:00 10 17 맑음
2021-05-08 12:00 10 17 맑음
2021-05-09 00:00 10 20 맑음
2021-05-09 12:00 10 20 맑음
2021-05-10 00:00 11 20 구름많음
2021-05-10 12:00 11 20 구름많음
2021-05-11 00:00 12 21 흐림
2021-05-11 12:00 12 21 흐림
2021-05-12 00:00 10 21 구름많음
2021-05-13 00:00 10 22 맑음
2021-05-14 00:00 12 21 구름많음
2021-05-07 00:00 12 18 구름많고 비
2021-05-07 12:00 12 18 맑음
2021-05-08 00:00 11 20 맑음
2021-05-08 12:00 11 20 맑음
2021-05-09 00:00 11 21 맑음
2021-05-09 12:00 11 21 맑음
2021-05-10 00:00 12 22 구름많음
2021-05-10 12:00 12 22 구름많음
2021-05-11 00:00 12 22 흐림
2021-05-11 12:00 12 22 흐림
2021-05-12 00:00 12 22 구름많음
2021-05-13 00:00 12 23 맑음
2021-05-14 00:00 12 23 구름많음
2021-05-07 00:00 12 18 구름많고 비
2021-05-07 12:00 12 18 맑음
2021-05-08 00:00 10 21 맑음
2021-05-08 12:00 10 21 맑음
2021-05-09 00:00 10 22 맑음
2021-05-09 12:00 10 22 맑음
2021-05-10 00:00 11 22 구름많음
2021-05-10 12:00 11 22 구름많음
2021-05-11 00:00 13 21 흐림
...
ElementTree를 사용해 간단하게 XML을 파싱했습니다.
728x90
'Web crawling' 카테고리의 다른 글
무슨~ 어디서~ 잘 못 됐는지~ 모르겠는디요~ (0) | 2021.05.12 |
---|---|
[파이썬을 이용한 웹 크롤링과 스크레이핑] 파이썬으로 스크레이핑 하는 흐름 (0) | 2021.05.10 |
Mac OS 터미널 실행시 (base) user로 뜰 때/가상환경 사용법 (2) | 2021.05.03 |
ModuleNotFoundError: No module named 'MySQLdb' / 왜 안될까 왜 안될까 (0) | 2021.04.08 |
[python] bs4 패키지를 이용해 네이버 날씨 crawling 연습해보기 (0) | 2021.04.05 |
Comments