博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 入门继续用tkinter实现股票查询
阅读量:6861 次
发布时间:2019-06-26

本文共 3746 字,大约阅读时间需要 12 分钟。

继续练习tkinter,顺便学习如何抓取网页内容。

使用urllib和requests都能得到url中的内容,有一丁点儿的区别。

代码思路:通过Entry获取输入内容(股票代码),然后通过Add按键添加,Del按键删除,添加在列表中的代码都能通过查询按钮获取到最新的股票信息。唯一的遗憾是没有实现手动选择更新频率。
与上一篇内容有惊人的相似。

获取网页内容之前做的工作:

1.分析需要获取的网页
2.打开chrome浏览器,点击右键查看,网页代码中找到Network,可以看到出现的链接及协议
3.决定获取的方式,可以根据对网页的分析结果,采用匹配策略

import urllib.request#import requestsimport tkinterfrom tkinter import *class StockParser():    def __init__(self,code_data,edit):        self.stock_data = code_data        self.edit=edit                if self.stock_data.split('"')[1] =='':             pass        else:            print(self.stock_data.split('"')[1])            self.stock_data=self.stock_data.split('"')[1]            name = self.stock_data.split(',')[0]            opening_price = float(self.stock_data.split(',')[1])            closing_price = float(self.stock_data.split(',')[2])            price = float(self.stock_data.split(',')[3])            high = float(self.stock_data.split(',')[4])            low = float(self.stock_data.split(',')[5])                        self.edit.insert(END,[name,opening_price,closing_price,high,low,price,])    class Window:    def __init__(self, root):        self.root = root      # 创建组件        self.entryUrl = tkinter.Entry(root,width = 30)        self.entryUrl.place(x = 65, y = 15)        self.get = tkinter.Button(root,text = '查询', command = self.Get)        self.get.place(x = 350, y = 15)        self.add = tkinter.Button(root,text = '添加', command = self.Add)        self.delete = tkinter.Button(root,text = '删除', command = self.Del)        self.add.place(x = 80, y = 55)        self.delete.place(x=120,y=55)            #添加布局框 下面的self.edit, self.scrollbar是插入在frame中的哦            self.frame = tkinter.Frame(root, bd=2)        self.frame.place(x=200,y = 90)        self.scrollbar = tkinter.Scrollbar(self.frame)        self.edit = tkinter.Listbox(self.frame,yscrollcommand = self.scrollbar.set,                width = 50, height = 22)          self.scrollbar.config(command=self.edit.yview)                  self.edit.grid(row=1,column=2)#这里用了grid,可以学习一下它的用法        self.scrollbar.grid(row=1,column=3,sticky='ew')                self.indicate=tkinter.Label(root,text='(Please input stock code:sh000000)',fg='red') #这里是完全没有改动,沿用上一节        self.indicate.place(x=65,y=35)        self.StockList=[]    def ListUpdate(self):        self.lb=tkinter.Listbox(self.root,selectmode = BROWSE)        for code in self.StockList:            self.lb.insert(END,code)        self.lb.pack()        self.lb.place(x=50,y=90)        def Add(self):        code = self.entryUrl.get()            if re.match(r'\w{2}\d{6}$',code) and code not in self.StockList:            self.StockList.append(code)         else:            pass        self.ListUpdate()    def Del(self):        code=self.entryUrl.get()        if code in self.StockList:            self.StockList.remove(code)        self.ListUpdate()    def Get(self):        if self.edit.get(0):            print(self.edit.get(0))            self.edit.delete(0,END)        self.edit.insert(END,['名 字','开盘价','闭盘价','最高','最低','当前价格'])        for code in self.StockList:             url='http://hq.sinajs.cn/list=%s' % (code,)            page=urllib.request.urlopen(url) #为什么urllib不行呢?            html= page.read() #记住这样得到的是html,必要是需要用HTMLParser解析,或者手动解析。            stock_data=html.decode('gb2312')            #r = requests.get(url)#当然使用requests也是没问题哒                           #stock_data= r.text  #text直接得到的就是str格式的            #stock_content=r.content.decode('gb2312')#content则需要转换格式            hp = StockParser(stock_data,self.edit)def main():    root = tkinter.Tk()    root.title('简易股票查询')    window = Window(root)    root.minsize(600,500)    root.maxsize(600,500)    root.mainloop()if __name__ =='__main__':    main()

不足之处请见谅

转载地址:http://nshyl.baihongyu.com/

你可能感兴趣的文章
弱引用研究
查看>>
Exchange 2007 的邮件监控器
查看>>
db2中的几个转义字符
查看>>
Android:ListView、ListActivity、 setListAdapter
查看>>
VMM系列之使用VMM服务器构建 Hyper-V主机(2)
查看>>
搭建本地YUM源服务器
查看>>
图解Oracle备份方式分类
查看>>
数组、哈希以及其他枚举类型
查看>>
exchange OWA 用户自行更改密码
查看>>
Microsoft Dynamics server 2015 所有的SQL server 2012 视图 介绍及功能
查看>>
Oracle备份恢复一(手动备份)
查看>>
Keep Moving blog改版
查看>>
PostgreSQL in 与 = any 的SQL语法异同与性能优化
查看>>
Android内核开发:源码的版本与分支详解
查看>>
不安全网络中的数据安全传输利器——GnuPG(下)
查看>>
cocos studio和cocos creator关系
查看>>
满江红
查看>>
TerryLee技术专栏>WCF后传>正文 WCF后传系列(3):深入WCF寻址Part 3—消息过滤引擎...
查看>>
在Android源码树中添加userspace I2C读写工具(i2c-util)
查看>>
关于C和C++的一点观点
查看>>