python2.7 实现的实时监控指定股票价格的小程序
来源:互联网 发布:ipad如何清除缓存数据 编辑:程序博客网 时间:2024/05/29 17:16
实时监控指定股票价格
本文涉及到的python 库 有 Tkinter,sys,urllib2,time
在开始之前我们首先要确定股票信息的来源,在此以东方财富网为例,在分析网站的过程中发现直接读取HTML源代码是抓不到数据的,很显然该页面使用了AJAX动态的请求数据在页面显示,因而我们只要简单的获取到这个api就好了。
- 获取东方财富网查询股票信息的api
- 使用urllib2
- 使用Tkinter库编写GUI程序
使用Google浏览器开发者工具获取api F12
在首页随便查一只股票
以300101为例,F12打开开发者工具,查看页面加载的js,依次排查response数据找到我们需要的结果
复制请求连接
请求URL容: http://nufm.dfcfw.com/EM_Finance2014NumericApplication/JS.aspx?type=CT&cmd=3001012&sty=CTBF&st=z&sr=&p=&ps=&cb=var%20pie_data=&js=(x)&token=28758b27a75f62dc3065b81f7facb365&_=1497258906443
在浏览器直接提交该链接看一下效果
非常完美正是我们想要的结果。
接下来就是码代码实现逻辑了。
基本需求,因为要上班,时不时的打开手机看股票或者开网页去看,被领导看到了影响会不好,因而做一个小窗口,放在桌面上查看很方便也很隐蔽。所以程序要满足如下需求,窗口小巧,只显示股票价格主要信息,能根据输入的股票代码查询信息。
代码如下
# -*- coding:utf-8 -*-#查看股票实时价格__author__ = 'zyy'from Tkinter import *import sys,urllib2,timecount = 0root = Tk()title = Label(root,text=u'股票代码')title.pack()l_stock_no = Entry(root)l_stock_no.pack()content = Label(root,text=u'实时行情')content.pack()class StockMonitor(Frame): msec = 1000 def __init__(self,parent=None,**kw): Frame.__init__(self,parent,kw) self._running = False self.c_date = StringVar() self.c_time = StringVar() self.stockinfo = StringVar() self.flag = True self.makeWidget() def makeWidget(self): label_date = Label(self,textvariable=self.c_date) label_date.pack() label_time = Label(self,textvariable=self.c_time) label_time.pack() label_stock = Label(self,textvariable=self.stockinfo) label_stock.pack() btn_start = Button(self,text='start',command=self.start) btn_start.pack(side=LEFT) btn_end = Button(self,text='end',command=self.quit) btn_end.pack(side=LEFT) def get_stock_info(self,stock_no,num_retries=2): try: url = 'http://nufm.dfcfw.com/EM_Finance2014NumericApplication/JS.aspx?type=CT&cmd='+stock_no.strip()+'2&sty=CTBF&st=z&sr=&p=&ps=&cb=var%20pie_data=&js=(x)&token=28758b27a75f62dc3065b81f7facb365&_=1496312544427' headers = {'User-agent':'WSWP'} request = urllib2.Request(url,headers=headers) page = urllib2.urlopen(request) page_content = page.read() except urllib2.URLError as e: print 'download error:',e.reason page_content = None if num_retries > 0: if hasattr(e,'code' and 500 <= e.code <600): # recursively retry 5xx HTTP errors return get_stock_info(stock_no,num_retries-1) return page_content def _update(self): self._set_count() self.timer = self.after(self.msec,self._update) def _set_count(self): stock_info = self.get_stock_info(l_stock_no.get()) if stock_info is not None: stock_info = stock_info[14:64] today1 = str(time.strftime('%Y-%m-%d', time.localtime(time.time()))) time1 = str(time.strftime('%H:%M:%S', time.localtime(time.time()))) self.stockinfo.set(stock_info) self.c_date.set(today1) self.c_time.set(time1) def start(self): self._update() self.pack(side = TOP)def main(): stock = StockMonitor(root) stock.pack(side = BOTTOM) root.mainloop() root.geometry('350x250')if __name__ == '__main__': main()
将Python 程序打包成可执行文件,使用pyinstaller 工具,使用方法可参考官网
http://www.pyinstaller.org/
PyInstaller Quickstart
Install PyInstaller from PyPI:
pip install pyinstaller
Go to your program’s directory and run:
pyinstaller yourprogram.py
如果出现UnicodDecodeError:ascii codec can’t decode byte …等等错误,找到出错的python 文件 ,在源码里开头加上如下代码
if sys.getdefaultencoding() != 'gbk': reload(sys) sys.setdefaultencoding('gbk')
本例打包命令如下
>> pyinstaller -F -w stockmonitor.py
参数说明 :
-F, –onefile Py代码只有一个文件
-D, –onedir Py代码放在一个目录中(默认是这个)
-K, –tk 包含TCL/TK
-d, –debug 生成debug模式的exe文件
-w, –windowed, –noconsole 窗体exe文件(Windows Only)
-c, –nowindowed, –console 控制台exe文件(Windows Only)
X, –upx 使用upx压缩exe文件
-o DIR, –out=DIR 设置spec文件输出的目录,默认在PyInstaller同目录
–icon=FILE.ICO 加入图标(Windows Only)
-v FILE, –version=FILE 加入版本信息文件
效果图如下
- python2.7 实现的实时监控指定股票价格的小程序
- python写的树莓派实时监控温度,cpu使用率的小程序
- python写的树莓派实时监控温度,cpu使用率的小程序
- Python 实现终端实时获取股票价格
- C实现的 CENTOS宽带监控小程序
- 实时视频监控的设计实现原理
- 基于RabbitMQ实现的实时日志监控
- 实时监控的客户端
- 用hive实现判断股票价格的波峰 波谷
- 远程监控程序的实现
- 远程监控程序的实现
- 使用supervisor实现程序从服务目录拉到发布目录并实时监控拉起死掉的程序进程
- python2抓取某虚拟币网数据的小程序
- 关于ASP.NET开发实时监控程序的体会
- Linux下的内存监控小程序
- 监控某一个小文件夹的java程序
- python 一个小的进程监控程序
- 操纵股票价格的潜在问题
- [Unity&C#&GameSparks]GameSparks 注册 可以运行的 账号说明
- webstrom安装git
- Android Studio 报错Failed to open zip file. Gradle's dependency cache may be corrupt
- JAVA_Test2 练习题
- 【LeetCode】273. Integer to English Words
- python2.7 实现的实时监控指定股票价格的小程序
- spring之把配置文件的加载交给服务
- 欢迎使用CSDN-markdown编辑器
- Android ANR学习资源
- ubuntu安装mongdb & 常用命令
- SurfaceView
- Android GestureDetector手势识别
- KRpano 360° 旋转物体效果,插件
- Eclipse 教程