年前,有这么个问题,需要把yahoo finance 网站上600000这支的股票每天收盘价格记录并下载下来。
刚开始是想的用excel内置数据获取加excel vba实现。
我花了一个小时的时间录宏,
大致就是在打开excel之后,
定时去从网站获取数据粘贴到另外的sheet页里边,
基本实现了功能。
代码如下:
刚开始是想的用excel内置数据获取加excel vba实现。
我花了一个小时的时间录宏,
大致就是在打开excel之后,
定时去从网站获取数据粘贴到另外的sheet页里边,
基本实现了功能。
代码如下:
<pre name="code" class="vb">Sub Macro2()
'
' Macro2 Macro
'
'
Dim 主菜单栏 As CommandBar
On Error Resume Next
Application.CommandBars("我的主菜单").Delete
Set 主菜单栏 = Application.CommandBars.Add
With 主菜单栏
.Visible = True
.Name = "我的主菜单"
.Position = msoBarTop
End With
'菜单恢复
'
DoEvents
Sheets("网站下载").Select
Range("A2:G2").Select
Selection.Copy
Sheets("数据表").Select
Range("A4180").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A4179").Select
Application.CutCopyMode = False
Selection.Copy
Range("A4180").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWindow.ScrollRow = 4142
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 1
Rows("2:2").Select
Selection.Delete Shift:=xlUp
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 4126
ActiveWindow.ScrollRow = 4147
Range("H4179").Select
Application.OnTime Now + TimeValue("09:30:00"), "Macro1"
'定时每10秒执行一次,直到11点13分
'
End Sub
***********************************************************
Sub doevent()
Dim 主菜单栏 As CommandBar
On Error Resume Next
Application.CommandBars("我的主菜单").Delete
Set 主菜单栏 = Application.CommandBars.Add
With 主菜单栏
.Visible = True
.Name = "我的主菜单"
.Position = msoBarTop
End With
'菜单恢复
'
DoEvents
If Sheets("网站下载").Range("A2").Value = Sheets("数据表").Range("A4179").Value Then Exit Sub Else Application.OnTime Now, "Macro2"
'比较数据,如果相同则退出
'
End Sub
**************************************************************************
后来觉得这个方法不太好玩。
就换了python2.7。
简单说就是利用
urllib库去取数然后再保存,
还挺快。画图就比较丑了,跟matlab一样。
###################取数######################
import urllib
url = 'http://chart.finance.yahoo.com/table.csv?'
url +='s=600000.SS'
url += '&a=7&b=4&c=2000' #开始时间
url +='&d=2&e=16&f=2016'#结束时间
url +='&g=d&ignore=.csv'
#params=urllib.urlencode({})
connect =urllib.urlopen(url)
data = connect.read()
#print data
urllib.urlretrieve(url,'./msft.csv')
###################取数######################
####################绘图##################
import numpy as np
import pandas as pd
url = 'http://chart.finance.yahoo.com/table.csv?'
url +='s=600000.SS'
url += '&a=7&b=4&c=2000' #开始时间
url +='&d=2&e=16&f=2016'#结束时间
url +='&g=d&ignore=.csv'
data = pd.read_csv(url, parse_dates=['Date'])
data.plot(x='Date',y='Close')
####################绘图##################