200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python Tkinter 爬虫实现GUI界面的天气查询系统

python Tkinter 爬虫实现GUI界面的天气查询系统

时间:2019-07-17 02:27:07

相关推荐

python Tkinter 爬虫实现GUI界面的天气查询系统

小伙伴们大家好,今天我们分享一点轻松愉快的内容。就是利用python+Tkinter+爬虫+GUI设计一个小型的天气查询系统。

技术点介绍

一、Tkinter

Tkinter是一个python内置的GUI图形库,专注于图形界面的开发。本系统之所以选择Tkinter就是因为是python内置的函数库,然后语法简单易用。缺点是界面不够美观,如果追求界面效果的话可以考虑使用Qt来作为图形化开发的工具。

二、爬虫

爬虫应该不用过多介绍了吧,一个非常牛批的进行大规模数据采集的工具,特别是随着大数据、人工智能时代的到来,爬虫也变得越来越火了。

三、目标网站、

关于目标网站,我们选定了天气网。网址链接是:

/

原因是,这个网站可以接收城市关键字然后添加到URL当中,直接进行网页请求即可,同时网站结构简单,没有ajax异步加载的状况,直接进行静态数据的抓取即可。

各个模块

一、Tkinter图形主界面

def Tkinter():

#设定标签

la1=tk.Label(window,text="请输入要查询的城市拼音", background="yellow")

# 设定查询按钮

btn = tk.Button(window, text="查询", command=getWh,background="red",activeforeground="green")

la1.pack(side="top")

entry1.pack()

btn.pack()

# 主窗口循环展示

window.mainloop()

二、天气数据抓取模块

def getWh():

city=entry1.get()

#天气查询URL

url="/"+city

#伪装浏览器头

headers = {

"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "

"(KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"}

html=requests.get(url,headers=headers)

#解析dom树

selector=etree.HTML(html.text)

#列表来接收信息

wh=[]

dl=selector.xpath("/html/body/div[5]/div/div[1]/dl")

city=dl[0].xpath("./dd[1]/h2/text()")#城市

wh.append(city[0])

date=dl[0].xpath("./dd[2]/text()")#日期

wh.append(date[0])

hot1=dl[0].xpath("./dd[3]/p/b/text()")#温度

hot2=dl[0].xpath("./dd[3]/p/i/text()")

hot=str(hot1[0]+hot2[0])

wh.append(hot)

status=dl[0].xpath("./dd[3]/span/b/text()")#天气状况

wh.append(status[0])

wet=dl[0].xpath("./dd[4]/b[1]/text()")#湿度

wh.append(wet[0][3:])

wind = dl[0].xpath("./dd[4]/b[2]/text()")#风度

wh.append(wind[0][4:])

light=dl[0].xpath("./dd[4]/b[3]/text()")#紫外线

wh.append(light[0][4:])

三、表格展示数据

# 表格展示数据

tree = ttk.Treeview(window) # 表格

tree["columns"] = ("key", "value")

tree.column("key", width=250) # 表示列,不显示

tree.column("value", width=250)

tree.heading("key", text="key值") # 显示表头

tree.heading("value", text="value值")

print(len(wh))

if len(wh) > 0:

tree.insert("", 0, text="line1", values=("城市", wh[0])) # 插入数据,

tree.insert("", 1, text="line2", values=("日期", wh[1]))

tree.insert("", 2, text="line3", values=("温度", wh[2]))

tree.insert("", 3, text="line4", values=("天气状况", wh[3]))

tree.insert("", 4, text="line5", values=("湿度", wh[4]))

tree.insert("", 5, text="line6", values=("风度", wh[5]))

tree.insert("", 6, text="line7", values=("紫外线", wh[6]))

tree.pack()

著作权归作者所有

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。