发布网友 发布时间:2022-04-25 23:05
共2个回答
懂视网 时间:2022-04-19 00:45
上班时间通过浏览器打开股票网站怕会被别人看到,没关系,试试在命令行下执行代码看数据就行了。python版本2.7.3
#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib2 import re import datetime def getStockInfo(url): """根据url获取信息""" stockList = [] request = urllib2.Request(url) response = urllib2.urlopen(request) stockStr = response.read() stockList = stockStr.split(',') return stockList def printStock(List): """打印相关信息""" print '***********price*****************' + List[1] print '***********float_price***********' + List[2] print '***********float_perct***********' + List[3] + '%' print '***********succ_unit*************' + List[4]+' shou' print '***********succ_price************' + List[5] def getUrlByCode(code): """根据代码获取详细的url""" url = '' stockCode = '' if code == 'sh': url = 'http://hq.sinajs.cn/list=s_sh000001' elif code == 'sz': url = 'http://hq.sinajs.cn/list=s_sz399001' elif code == 'cyb': url = 'http://hq.sinajs.cn/list=s_sz399006' else: pattern = re.compile(r'^60*') match = pattern.match(code) if match: stockCode = 'sh'+ code else: stockCode = 'sz' + code url = 'http://hq.sinajs.cn/list=s_'+stockCode return url #输入stock代码输出对应的价格信息 #code = raw_input('code: ') codeDict = { 'sh' : 'shang hai zq', 'sz' : 'shen zheng zq', 'cyb' : 'chang ye ban', '601788' : 'guang da zheng quan', '000651' : 'ge li dian qi', } #http://hq.sinajs.cn/list=s_sh000001 (上海大盘查询) #http://hq.sinajs.cn/list=s_sz399001 (深圳大盘查询) count = 0; while (count<=100):#循环100次后再退出 # 循环字典 for key in codeDict: print key + '--'+codeDict[key] code = raw_input('please select a code: ') now_time = datetime.datetime.now() #打印该code的信息 url = getUrlByCode(code) stockInfo = getStockInfo(url) #print stockInfo printStock(stockInfo) end_time = datetime.datetime.now() costTime = (end_time - now_time).seconds print '总共花费时间'+str(costTime)+'秒' count +=1
热心网友 时间:2022-04-18 21:53
本程序使用Python 2.7.6编写,扩展了Python自带的HTMLParser,自动根据预设的股票代码列表,从Yahoo Finance抓取列表中的数据日期、股票名称、实时报价、当日变化率、当日最低价、当日最高价。
由于Yahoo Finance的股票页面中的数值都有相应id。
例如纳斯达克100指数ETF(QQQ)
其中实时报价的HTML标记为
[html] view plain copy
<span id="yfs_l84_qqq">87.49</span>
而标普500指数ETF(SPY)
其中实时报价的HTML标记为
[html] view plain copy
<span id="yfs_l84_spy">187.25</span>
因此本数据抓取程序根据相应的id字符串来查找数据。具体来说就是先继承HTMLParser,然后在自定义的子类中重载handle_data(self, data)方法,查找包含相应id字符串(例如实时报价的id字符串为"yfs_l84_"+股票代码)的HTML标记,并输出这个HTML标记中的数据(例如qqq的<span id="yfs_l84_qqq">87.49</span>,其中的数据87.49就是实时报价。)
样本输出:
数据依次是
数据日期 股票代码 股票名称 实时报价 日变化率 日最低价 日最高价
[python] view plain copy
05/05/2014 ibb iShares Nasdaq Biotechnology (IBB) 233.28 1.85% 225.34 233.28
05/05/2014 socl Global X Social Media Index ETF (SOCL) 17.48 0.17% 17.12 17.53
05/05/2014 pnqi PowerShares NASDAQ Internet (PNQI) 62.61 0.35% 61.46 62.74
05/05/2014 xsd SPDR S&P Semiconctor ETF (XSD) 67.15 0.12% 66.20 67.41
05/05/2014 ita iShares US Aerospace & Defense (ITA) 110.34 1.15% 108.62 110.56
05/05/2014 iai iShares US Broker-Dealers (IAI) 37.42 -0.21% 36.86 37.42
05/05/2014 vbk Vanguard Small Cap Growth ETF (VBK) 119.97 -0.03% 118.37 120.09
05/05/2014 qqq PowerShares QQQ (QQQ) 87.95 0.53% 86.76 87.97
05/05/2014 ewi iShares MSCI Italy Capped (EWI) 17.86 -0.56% 17.65 17.89
05/05/2014 dfe WisdomTree Europe SmallCap Dividend (DFE) 62.33 -0.11% 61.94 62.39
05/05/2014 pbd PowerShares Global Clean Energy (PBD) 13.03 0.00% 12.97 13.05
05/05/2014 eirl iShares MSCI Ireland Capped (EIRL) 38.52 -0.16% 38.39 38.60