728x90
반응형
html = '''
<html><body>
<div id='potal'>
<h1>포탈목록</h1>
<ul class = 'items'>
<li><a href="http://www.naver.com">naver</a></li>
<li><a href="http://www.daum.net">daum</a></li>
</ul>
</div>
</body></html>
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
links = soup.find_all("a")
for a in links :
href = a.attrs["href"]
text = a.string
print(text, ">", href)
# naver > http://www.naver.com
# daum > http://www.daum.net
# "div#potal > h1" : id 속성값이 potal인 div 태그의 하위 태그 중 태그의 이름이 h1 태그 선택
# > : 하위태그, 자식 노드 바로 아래태그
# : 하위태그 자손노드 아래 태그 전부
h1 = soup.select_one("div#potal > h1").string
print('h1=',h1)
# h1= 포탈목록
li_list = soup.select("div#potal > ul.items > li")
print(type(li_list))
print(li_list)
for li in li_list :
print(li)
print("li = ", li.string)
<class 'list'>
[<li><a href="http://www.naver.com">naver</a></li>, <li><a href="http://www.daum.net">daum</a></li>]
<li><a href="http://www.naver.com">naver</a></li>
li = naver
<li><a href="http://www.daum.net">daum</a></li>
li = daum
from bs4 import BeautifulSoup
import urllib.request as req
url = "https://www.weather.go.kr/weather/forecast/mid-term-rss3.jsp"
res = req.urlopen(url) # 연결
print(res)
soup = BeautifulSoup(res, "html.parser")
title = soup.find("title").string
wf = soup.find("wf").string
print(title)
print(wf)
#
<http.client.HTTPResponse object at 0x0000028CAB0C6EB0>
기상청 육상 중기예보
○ (강수) 11월 1일(월)~2일(화)은 강원영동에 비가 오겠고, 6일(토)은 제주도에 비가 오겠습니다. <br />○ (기온) 이번 예보기간 아침 기온은 4~13도, 낮 기온은 13~21도로 오늘(28일, 아침최저기온 3~12도, 낮최고기온 18~23도)과 비슷하거나 조금 낮겠습니다.<br /><br />* 이번 예보기간 동안 내륙을 중심으로 낮과 밤의 기온차가 크겠으니, 건강관리에 각별히 유의하기 바랍니다.
# <![CDATA[...]]> :CDATA 섹션 > 순수문자열의 영역
# 마크업언어로 파싱하지 않고 순수문자열로 인식
# <태그>
# 10 > 5 PARSER 가 햇갈려함, 그래서 순수문자열의 영역으로 애매함 방지, CDATA 섹션
for w in wf.split("<br />") :
print(w)
○ (강수) 11월 1일(월)~2일(화)은 강원영동에 비가 오겠고, 6일(토)은 제주도에 비가 오겠습니다.
○ (기온) 이번 예보기간 아침 기온은 4~13도, 낮 기온은 13~21도로 오늘(28일, 아침최저기온 3~12도, 낮최고기온 18~23도)과 비슷하거나 조금 낮겠습니다.
* 이번 예보기간 동안 내륙을 중심으로 낮과 밤의 기온차가 크겠으니, 건강관리에 각별히 유의하기 바랍니다.
import os.path
if not os.path.exists("forcast.xml") : # 파일없으면
req.urlretrieve(url, "forcast.xml") # 파일저장
# xml은 메모장으로 가능
# 모든 location 태그의 하위태그 중 city 태그를 조회하기
for location in soup.find_all("location") :
name = location.find("city").string
weather = location.find("wf").string
print(name, weather)
서울 구름많음
인천 구름많음
수원 구름많음
파주 구름많음
이천 구름많음
평택 구름많음
춘천 구름많음
원주 구름많음
강릉 맑음
대전 맑음
세종 맑음
홍성 맑음
청주 맑음
충주 맑음
영동 맑음
광주 맑음
목포 맑음
여수 맑음
순천 맑음
광양 맑음
나주 맑음
전주 맑음
군산 맑음
정읍 맑음
남원 맑음
고창 맑음
무주 맑음
부산 맑음
울산 맑음
창원 맑음
진주 맑음
거창 맑음
통영 맑음
대구 맑음
안동 맑음
포항 맑음
경주 맑음
울진 맑음
울릉도 맑음
제주 맑음
서귀포 맑음
반응형
'Data_Science > Data_Analysis_Py' 카테고리의 다른 글
17. 서울 기온 분석 (0) | 2021.11.02 |
---|---|
16. EDA, 멕시코식당 주문 CHIPOTLE (0) | 2021.10.28 |
14. Stockprice (2 (0) | 2021.10.26 |
13. Stockprice (0) | 2021.10.26 |
12. titanic (2 (0) | 2021.10.26 |