国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python tkinter界面實現歷史天氣查詢的示例代碼

Python tkinter界面實現歷史天氣查詢的示例代碼

2020-08-24 00:05葉庭云 Python

這篇文章主要介紹了Python tkinter界面實現歷史天氣查詢的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、實現效果

1. python代碼

?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import requests
from lxml import etree
import re
import tkinter as tk
from PIL import Image, ImageTk
from xpinyin import Pinyin
 
 
def get_image(file_nam, width, height):
  im = Image.open(file_nam).resize((width, height))
  return ImageTk.PhotoImage(im)
 
 
def spider():
  headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24',
    "referer": "https://lishi.tianqi.com/chengdu/index.html"
  }
  p = Pinyin()
  place = ''.join(p.get_pinyin(b1.get()).split('-'))      # 獲取地區文本框的輸入 變為拼音
  # 處理用戶輸入的時間
  # 規定三種格式都可以 2018/10/1 2018年10月1日 2018-10-1
  date = b2.get()  # 獲取時間文本框的輸入
  if '/' in date:
    tm_list = date.split('/')
  elif '-' in date:
    tm_list = date.split('-')
  else:
    tm_list = re.findall(r'\d+', date)
 
  if int(tm_list[1]) < 10:    # 1-9月 前面加 0
    tm_list[1] = f'0{tm_list[1]}'
  # 分析網頁規律 構造url
  # 直接訪問有該月所有天氣信息的頁面 提高查詢效率
  url = f"https://lishi.tianqi.com/{place}/{''.join(tm_list[:2])}.html"
  resp = requests.get(url, headers=headers)
  html = etree.HTML(resp.text)
  # xpath定位提取該日天氣信息
  info = html.xpath(f'//ul[@class="thrui"]/li[{int(tm_list[2])}]/div/text()')
  # 輸出信息格式化一下
  info1 = ['日期:', '最高氣溫:', '最低氣溫:', '天氣:', '風向:']
  datas = [i + j for i, j in zip(info1, info)]
  info = '\n'.join(datas)
  t.insert('insert', '    查詢結果如下    \n\n')
  t.insert('insert', info)
  print(info)
 
 
win = tk.Tk()
win.title('全國各地歷史天氣查詢系統')
win.geometry('500x500')
 
# 畫布 設置背景圖片
canvas = tk.Canvas(win, height=500, width=500)
im_root = get_image('test.jpg', width=500, height=500)
canvas.create_image(250, 250, image=im_root)
canvas.pack()
 
# 單行文本
L1 = tk.Label(win, bg='yellow', text="地區:", font=("SimHei", 12))
L2 = tk.Label(win, bg='yellow', text="時間:", font=("SimHei", 12))
L1.place(x=85, y=100)
L2.place(x=85, y=150)
 
# 單行文本框 可采集鍵盤輸入
b1 = tk.Entry(win, font=("SimHei", 12), show=None, width=35)
b2 = tk.Entry(win, font=("SimHei", 12), show=None, width=35)
b1.place(x=140, y=100)
b2.place(x=140, y=150)
 
# 設置查詢按鈕
a = tk.Button(win, bg='red', text="查詢", width=25, height=2, command=spider)
a.place(x=160, y=200)
 
# 設置多行文本框 寬 高 文本框中字體 選中文字時文字的顏色
t = tk.Text(win, width=30, height=8, font=("SimHei", 18), selectforeground='red') # 顯示多行文本
t.place(x=70, y=280)
 
# 進入消息循環
win.mainloop()

2. 運行效果

運行效果如下:

Python tkinter界面實現歷史天氣查詢的示例代碼

二、基本思路

導入用到的庫

?
1
2
3
4
5
6
import requests
from lxml import etree
import re
import tkinter as tk
from PIL import Image, ImageTk
from xpinyin import Pinyin

1. 爬蟲部分

目標url:https://lishi.tianqi.com/

該網站提供了全國34個省、市所屬的2290個地區的歷史天氣預報查詢,數據來源于城市當天的天氣信息,可以查詢到歷史天氣氣溫,歷史風向,歷史風力等歷史天氣狀況。

Python tkinter界面實現歷史天氣查詢的示例代碼

Python tkinter界面實現歷史天氣查詢的示例代碼

分析網頁可以發現,某個地區、某個月的所有天氣數據的url為:https://lishi.tianqi.com/ + 地區名字的拼音 + ‘/' + 年月.html。
根據用戶輸入的地區和時間,進行字符串的處理,構造出url,用于request請求有該月所有天氣信息的頁面,獲取響應后Xpath定位提取用戶輸入的要查詢的日期的天氣信息,查詢結果顯示在tkinter界面。

爬蟲代碼如下:

?
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
32
33
def spider():
  headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24',
    "referer": "https://lishi.tianqi.com/chengdu/index.html"
  }
  p = Pinyin()
  place = ''.join(p.get_pinyin(b1.get()).split('-'))      # 獲取地區文本框的輸入 變為拼音
  # 處理用戶輸入的時間
  # 規定三種格式都可以 2018/10/1 2018年10月1日 2018-10-1
  date = b2.get()  # 獲取時間文本框的輸入
  if '/' in date:
    tm_list = date.split('/')
  elif '-' in date:
    tm_list = date.split('-')
  else:
    tm_list = re.findall(r'\d+', date)
 
  if int(tm_list[1]) < 10:    # 1-9月 前面加 0
    tm_list[1] = f'0{tm_list[1]}'
  # 分析網頁發現規律  構造url
  # 直接訪問有該月所有天氣信息的頁面 提高查詢效率
  url = f"https://lishi.tianqi.com/{place}/{''.join(tm_list[:2])}.html"
  resp = requests.get(url, headers=headers)
  html = etree.HTML(resp.text)
  # xpath定位提取該日天氣信息
  info = html.xpath(f'//ul[@class="thrui"]/li[{int(tm_list[2])}]/div/text()')
  # 輸出信息格式化一下
  info1 = ['日期:', '最高氣溫:', '最低氣溫:', '天氣:', '風向:']
  datas = [i + j for i, j in zip(info1, info)]
  info = '\n'.join(datas)
  t.insert('insert', '    查詢結果如下    \n\n')
  t.insert('insert', info)
  print(info)

2. tkinter界面

代碼如下:

?
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
32
33
34
35
36
37
38
def get_image(file_nam, width, height):
  im = Image.open(file_nam).resize((width, height))
  return ImageTk.PhotoImage(im)
 
 
win = tk.Tk()
# 設置窗口title和大小
win.title('全國各地歷史天氣查詢系統')
win.geometry('500x500')
 
# 畫布 設置背景圖片
canvas = tk.Canvas(win, height=500, width=500)
im_root = get_image('test.jpg', width=500, height=500)
canvas.create_image(250, 250, image=im_root)
canvas.pack()
 
# 單行文本
L1 = tk.Label(win, bg='yellow', text="地區:", font=("SimHei", 12))
L2 = tk.Label(win, bg='yellow', text="時間:", font=("SimHei", 12))
L1.place(x=85, y=100)
L2.place(x=85, y=150)
 
# 單行文本框 可采集鍵盤輸入
b1 = tk.Entry(win, font=("SimHei", 12), show=None, width=35)
b2 = tk.Entry(win, font=("SimHei", 12), show=None, width=35)
b1.place(x=140, y=100)
b2.place(x=140, y=150)
 
# 設置查詢按鈕 點擊 調用爬蟲函數實現查詢
a = tk.Button(win, bg='red', text="查詢", width=25, height=2, command=spider)
a.place(x=160, y=200)
 
# 設置多行文本框 寬 高 文本框中字體 選中文字時文字的顏色
t = tk.Text(win, width=30, height=8, font=("SimHei", 18), selectforeground='red') # 顯示多行文本
t.place(x=70, y=280)
 
# 進入消息循環
win.mainloop()

tkinter界面效果如下:

Python tkinter界面實現歷史天氣查詢的示例代碼

到此這篇關于Python tkinter界面實現歷史天氣查詢的示例代碼的文章就介紹到這了,更多相關Python tkinter歷史天氣查詢內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/fyfugoyfa/article/details/108104202

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产黄色在线 | 中文字幕日韩在线 | 久久99精品久久久久久久青青日本 | 欧美在线不卡视频 | 自拍三区 | 自拍偷拍五月天 | 精品国产区一区二 | 亚洲乱码一区二区三区在线观看 | 在线免费观看黄色 | 2015成人永久免费视频 | 亚洲精品久久久久久久久久久 | 欧美日韩不卡在线 | 婷婷久久五月天 | 北条麻妃99精品青青久久 | 久久国产99 | 日韩欧美一区二区在线视频 | 日本亚洲欧美 | 美女视频一区二区三区 | 精品成人一区二区 | 日本成人| 黄在线免费观看 | 久久99精品视频在线观看 | 成人免费一区二区三区视频网站 | 黄色三级网站 | 在线视频 亚洲 | 亚洲精品高潮呻吟久久av | cao视频 | 欧美1级| 欧美一区二区三 | 国产亲子乱弄免费视频 | 精品国产一区二区三区高潮视 | 一级片在线观看 | 国产一区二区三区四区在线观看 | 亚洲人一区二区 | 国产精品99一区二区三区 | 国产精品久久久久无码av | 国产精品丝袜视频 | 国产a级黄色毛片 | 亚洲国产成人精品久久久国产成人一区 | 冥王星之恋泰剧在线观看 | 久久av网 |