matlab 爬虫抓取A股当日每笔成交数据
话不多说直接上代码,注释我还是写的比较详细的。
抓取数据
爬虫我也是刚接触,这个例子是参考张总教程
function [dataTick,timeTick]=get_tradedetail(stockid,date)
% 获取单个股票单天成交明细数据
% stockid='sz000565';
% date='2017-06-15';
dataTick=[];
timeTick=[];
try
url=['http://market.finance.sina.com.cn/downxls.php?date=',date,'&symbol=',stockid];
str=urlread(url,'Charset','GBK');
data=textscan(str,'%s');
data=data{1,1};
% 这句用的好
dataA=reshape(data,6,size(data,1)/6)';
% 数据名称
name=dataA(1,:)';
% 删除 name 行
dataA(1,:)=[];
% 将数据反转,也就是从早到晚排列
dataA=flipud(dataA);
% 将时间数值化
timeTick=datenum(dataA(:,1));
% 剔除日期,获得当天的时间点
timeTick=timeTick-floor(timeTick);
% 1 买盘,-1买盘,0 中性盘
dataT=zeros(size(dataA,1),1);
ind=strcmp(dataA(:,6),'买盘');
dataT(ind,1)=1;
ind=strcmp(dataA(:,6),'卖盘');
dataT(ind,1)=-1;
% 将dataB 从元胞转换成double型
dataB=dataA(:,[2 4 5]);
dataB=char(dataB);
dataB=str2num(dataB);
dataB=reshape(dataB,size(dataA,1),3);
dataTick=[dataB,dataT];
catch
disp('当天没有数据')
end
end
抓取数据然储存
function down_tradedetail(stockid,date,varargin)
% download tradedetail of stockid on date
% 指定存储路径或是默认路径
if isempty(varargin)
filepath='C:\Users\aidensong\Desktop\sina_download\';
else
filepath = varargin{1};
end
% 判断目录是否存在,若不存在则创建
if ~exist(filepath)
mkdir(filepath); %创建文件夹;
end
%下载网址
fullURL=['http://market.finance.sina.com.cn/downxls.php?date=',date,'&symbol=',stockid];
filename=[filepath,[stockid,'_',date],'.txt']; %保存的文件名
tic;
[~,status]=urlwrite(fullURL,filename);%下载命令
if status==1
t=toc;
list=dir(filename);
xi=list.bytes;
disp([list.name,' 下载成功 ','文件大小为:',num2str(xi/1024/1024),'M',' 耗时',num2str(t/60),'分钟']);
else
disp(['pottmp.',list.name,'.nc','下载失败']);
end
end
一句话总结。好好学习,天天向上。