Python 날씨 조회 소프트웨어 구현
어느 날 반 에서 비 를 맞 아 물 에 빠 진 생쥐 가 되 어 친구 들 에 게 감개 무량 하 게 보 냈 습 니 다.그리고...
밤 이 깊 어 인기척 이 없 을 때 갑자기 후배 로부터 Py 파일 을 받 았 습 니 다.실 행 된 후에 일이 간단 하지 않다 는 것 을 알 게 되 었 습 니 다(아래 그림).
이 건 내 가...다음 에 나 가서 우산 가 져 다 줄 까?그렇게 많 든 지 간 에 프로그램 원숭이 로 서 절 차 를 만나면 먼저 분해 해라.
도구
파충류:requests
해석:re
UI:tkinter
3.코드 해독
일기 예 보 를 가 져 오 는 애플 릿 을 만 들 려 면 첫 번 째 단 계 는 일기예보 의 오 름 을 할 수 있 는 것 입 니 다.이곳 은 도시 이름 이 바 이 두 날씨의 URL 과 일치 하 는 오 름 을 하고 정규 적 인 방식 으로 분석 한 다음 에 사전 으로 결 과 를 되 돌려 줍 니 다.
class Weather(object):
def __init__(self):
pass
def crawl(self, key):
url = 'http://weathernew.pae.baidu.com/weathernew/pc?query=' + key + ' &srcid=4982&city_name=' + key + '&province_name=' + key
#
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
'Referer': 'https://googleads.g.doubleclick.net/'
}
# HTML
res = requests.get(url, headers=headers).text
#
time = re.search(r'\{\"update_time\":\"(.+?)\"', res).group(1)
#
weather = re.search(r'\"weather\"\:\"(.+?)\"', res).group(1)
weather = weather.encode('utf-8').decode("unicode-escape")
#
weather_l = re.search(r'temperature_night\"\:\"(.+?)\"', res).group(1)
weather_h = re.search(r'temperature_day\"\:\"(.+?)\"', res).group(1)
#
wind_now = re.search(r'\"wind_power_day\"\:\"(.+?)\"', res).group(1)
wind_now = wind_now.encode('utf-8').decode("unicode-escape")
wind_name = re.search(r'\"wind_direction_day\"\:\"(.+?)\"',
res).group(1)
wind_name = wind_name.encode('utf-8').decode("unicode-escape")
wind = wind_name + wind_now
#
desc = re.search(r'\"desc\"\:\"(.+?)\"', res).group(1)
desc = desc.encode('utf-8').decode("unicode-escape")
#
dic = {
' ': key,
' ': time,
' ': weather,
' ': weather_l + '-' + weather_h + ' ',
' ': wind,
' ': desc,
}
return dic
일기예보 의 코드 를 작성 한 후에 입력/기어 오 르 는 내용 과 상호작용 을 하 는 UI 를 쓸 수 있 습 니 다.UI 를 쓰 는 방식 은 대동소이 합 니 다.코드 는 다음 과 같 습 니 다.
class Weather_UI(object):
def __init__(self):
self.window = Tk()
self.weather = Weather()
self.window.title(u' ')
#
self.window.geometry('310x370')
#
self.result_text0 = Label(self.window, text=u' :
')
self.result_text0.place(x=10, y=5, height=130)
self.result_text0.bind(' ')
self.result_text1 = Text(self.window, background='#ccc')
self.result_text1.place(x=140, y=10, width=155, height=155)
self.result_text1.bind("<Key-Return>", self.submit)
#
#
self.submit_btn = Button(self.window,
text=u' ',
command=self.submit)
self.submit_btn.place(x=170, y=165, width=70, height=25)
self.submit_btn2 = Button(self.window, text=u' ', command=self.clean)
self.submit_btn2.place(x=250, y=165, width=35, height=25)
#
self.title_label = Label(self.window, text=u' :')
self.title_label.place(x=10, y=165)
#
self.result_text = Text(self.window, background='#ccc')
self.result_text.place(x=10, y=190, width=285, height=165)
def submit(self):
#
content = self.result_text1.get(0.0, END).strip().replace("
", " ")
#
result = self.weather.crawl(content)
#
for k, v in result.items():
self.result_text.insert(END, k + ':' + v)
self.result_text.insert(END, '
')
self.result_text.insert(END, '
')
#
def clean(self):
self.result_text1.delete(0.0, END)
self.result_text.delete(0.0, END)
def run(self):
self.window.mainloop()
실행 결 과 는 다음 과 같 습 니 다.전체 코드
import json
import requests
import re
import tkinter as Tk
from tkinter import Tk, Button, Entry, Label, Text, END
class Weather(object):
def __init__(self):
pass
def crawl(self, key):
url = 'http://weathernew.pae.baidu.com/weathernew/pc?query=' + key + ' &srcid=4982&city_name=' + key + '&province_name=' + key
#
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
'Referer': 'https://googleads.g.doubleclick.net/'
}
# HTML
res = requests.get(url, headers=headers).text
#
time = re.search(r'\{\"update_time\":\"(.+?)\"', res).group(1)
#
weather = re.search(r'\"weather\"\:\"(.+?)\"', res).group(1)
weather = weather.encode('utf-8').decode("unicode-escape")
#
weather_l = re.search(r'temperature_night\"\:\"(.+?)\"', res).group(1)
weather_h = re.search(r'temperature_day\"\:\"(.+?)\"', res).group(1)
#
wind_now = re.search(r'\"wind_power_day\"\:\"(.+?)\"', res).group(1)
wind_now = wind_now.encode('utf-8').decode("unicode-escape")
wind_name = re.search(r'\"wind_direction_day\"\:\"(.+?)\"',
res).group(1)
wind_name = wind_name.encode('utf-8').decode("unicode-escape")
wind = wind_name + wind_now
#
desc = re.search(r'\"desc\"\:\"(.+?)\"', res).group(1)
desc = desc.encode('utf-8').decode("unicode-escape")
#
dic = {
' ': key,
' ': time,
' ': weather,
' ': weather_l + '-' + weather_h + ' ',
' ': wind,
' ': desc,
}
return dic
class Weather_UI(object):
def __init__(self):
self.window = Tk()
self.weather = Weather()
self.window.title(u' ')
#
self.window.geometry('310x370')
#
self.result_text0 = Label(self.window, text=u' :
')
self.result_text0.place(x=10, y=5, height=130)
self.result_text0.bind(' ')
self.result_text1 = Text(self.window, background='#ccc')
self.result_text1.place(x=140, y=10, width=155, height=155)
self.result_text1.bind("<Key-Return>", self.submit)
#
#
self.submit_btn = Button(self.window,
text=u' ',
command=self.submit)
self.submit_btn.place(x=170, y=165, width=70, height=25)
self.submit_btn2 = Button(self.window, text=u' ', command=self.clean)
self.submit_btn2.place(x=250, y=165, width=35, height=25)
#
self.title_label = Label(self.window, text=u' :')
self.title_label.place(x=10, y=165)
#
self.result_text = Text(self.window, background='#ccc')
self.result_text.place(x=10, y=190, width=285, height=165)
def submit(self):
#
content = self.result_text1.get(0.0, END).strip().replace("
", " ")
#
result = self.weather.crawl(content)
#
for k, v in result.items():
self.result_text.insert(END, k + ':' + v)
self.result_text.insert(END, '
')
self.result_text.insert(END, '
')
#
def clean(self):
self.result_text1.delete(0.0, END)
self.result_text.delete(0.0, END)
def run(self):
self.window.mainloop()
A = Weather_UI()
A.run()
파 이 썬 이 날씨 조회 시스템 을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 날씨 조회 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.