Python 入门继续用tkinter实现股票查询
继续练习tkinter,顺便学习如何抓取网页内容。
使用urllib和requests都能得到url中的内容,有一丁点儿的区别。
代码思路:通过Entry获取输入内容(股票代码),然后通过Add按键添加,Del按键删除,添加在列表中的代码都能通过查询按钮获取到最新的股票信息。唯一的遗憾是没有实现手动选择更新频率。
与上一篇内容有惊人的相似。
获取网页内容之前做的工作:
1.分析需要获取的网页
2.打开chrome浏览器,点击右键查看,网页代码中找到Network,可以看到出现的链接及协议
3.决定获取的方式,可以根据对网页的分析结果,采用匹配策略
import urllib.request #import requests import tkinter from 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()
不足之处请见谅
相关推荐
lsjweiyi 2020-11-17
kikaylee 2020-05-31
HMHYY 2020-05-19
AndroidAmelia 2020-05-19
singer 2020-05-07
Jonderwu 2020-05-07
xirongxudlut 2020-05-07
ITxiaobaibai 2020-02-19
柠檬班 2020-02-03
chouliqingke 2019-12-24
liusarazhang 2019-10-29
canvaskin 2019-06-14
lanzh 2019-06-14
xavierri 2019-06-14
vevoly 2019-06-14
BmwGaara 2019-06-14
Wendywubowen 2019-06-14
pythonxuexi 2019-06-14
ciqingloveless 2019-06-13