작성
·
70
0
개인적으로 만든거다 보니, 부족한 면이 많습니다.
헷갈리시는 분들이나 조금 어렵다고 느껴지는 분들을 위해서 공유해드려요 !
import requests
from bs4 import BeautifulSoup
'''
[오늘의 날씨]
흐림, 어제보다 00도 높아요
현재 00도 (최저 00도 / 최고 00도)
오전 강수확률 00% / 오후 강수확률 00%
미세먼지 좋음
초미세먼지 좋음
'''
def scrape_weather():
print("[오늘의 날씨]")
url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%82%A0%EC%94%A8"
res = requests.get(url)
res.raise_for_status()
soup = BeautifulSoup(res.text, "lxml")
cast = soup.find("p", class_="summary").get_text()
curr_temp = soup.find("div", class_="temperature_text").get_text().replace("현재 온도", "") # 현재온도
targets = soup.find_all("li", class_="week_item today")
min_temp = targets[0].find("span", class_="lowest").get_text() # 최저 온도
max_temp = targets[0].find("span", class_="highest").get_text() # 최고 온도
morning_and_afternoon = targets[0].find_all("span", class_="weather_left")
morning_rain_rate = morning_and_afternoon[0].get_text() # 오전 강수확률
afternoon_rain_rate = morning_and_afternoon[1].get_text() # 오후 강수확률
dust_list = soup.find_all("li", class_="item_today")
pm10 = dust_list[0].get_text() # 미세먼지
pm25 = dust_list[1].get_text() # 초미세먼지
# 출력
print(cast)
print(f"현재 {curr_temp} ({min_temp} / {max_temp})")
print(f"강수확률 {morning_rain_rate.strip()} / {afternoon_rain_rate.strip()}")
print()
print(f"{pm10.strip()}")
print(f"{pm25.strip()}")
print()
if __name__ == "__main__":
scrape_weather() # 오늘의 날씨 정보 가져오기
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
님의 코드는 Naver로부터 웹 페이지의 HTML을 가져와 BeautifulSoup을 사용하여 웹 스크래핑을 진행하는 파이썬 스크립트입니다. 이 스크립트는 날씨 정보를 추출하여 출력하는 기능을 수행합니다. BeautifulSoup와 requests 라이브러리를 사용하여 웹의 HTML을 파싱하고, 특정 HTML 요소에서 텍스트 정보를 추출하여 현재 날씨, 최저/최고 온도, 강수 확률, 미세먼지 및 초미세먼지 수준을 출력합니다.
웹 스크래핑에 관심이 있으시다면 더 많은 BeautifulSoup의 기능과 선택자를 활용하는 방법, 그리고 HTML 구조가 변경되었을 시 대처 방안 등을 공부해 보시는 것도 좋을 것 같습니다.
질문이 있으시다면 언제든지 문의해 주세요!