一个极其简洁的Python网页抓取程序,自己主动从雅虎財经抓取股票数据

本程序使用Python 2.7.6编写,扩展了Python自带的HTMLParser,自己主动依据预设的股票代码列表,从Yahoo Finance抓取列表中的数据日期、股票名称、实时报价、当日变化率、当日最低价、当日最高价。

因为Yahoo Finance的股票页面中的数值都有对应id。

比如纳斯达克100指数ETF(QQQ)http://finance.yahoo.com/q?s=qqq
当中实时报价的HTML标记为

<span id="yfs_l84_qqq">87.49</span>

而标普500指数ETF(SPY)http://finance.yahoo.com/q?s=spy

当中实时报价的HTML标记为

<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就是实时报价。)


样本输出:

数据依次是

数据日期 股票代码 股票名称 实时报价 日变化率 日最低价 日最高价

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 Semiconductor 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


本程序源码:
https://bitbucket.org/lsz/html-parser

HTMLParser的官方说明文档:
https://docs.python.org/2/library/htmlparser.html

HTMLParser(解析HTML文档元素)
http://blog.csdn.net/hxsstar/article/details/17241709

posted @ 2014-10-09 10:51  hrhguanli  阅读(2574)  评论(0编辑  收藏  举报