php抓取股票数据
public function stock(){
$curl = new Curl();
$curl->setUserAgent('Mozilla/5.0');
$curl->get('http://stock.gtimg.cn/data/get_hs_xls.php?id=ranka&type=1&metric=chr');
$file_name = date('Ymd').'.xls';
$dataSet = '';
if ($curl->error) {
echo $curl->error_code;
}
else {
file_put_contents($file_name, $curl->response);
//echo $curl->response;
$objPHPExcel = \PHPExcel_IOFactory::load($file_name);
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
$objdata = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
$date = date('Y-m-d',strtotime(date('Y',time()).'-'.$objdata['1']['B']));
foreach ($objdata as $k=>$v){
if($k>2){
$dataSet[]=array(
'dm'=>$v['A'],
'name'=>$v['B'],
'zxj' =>$v['C'],
'zdf' =>str_replace('%', '', $v['D']),
'zde' =>$v['E'],
'cjl' =>$v['H'],
'cje' =>$v['I'],
'jk' =>$v['J'],
'zs' =>$v['K'],
'zg' =>$v['L'],
'zd' =>$v['M'],
'data_time'=>$date,
'ctime'=>date('Y-m-d H:i:s',time()),
);
}
}
}
if($dataSet) {
db('record')->where('data_time',$date)->delete();
db('record')->insertAll($dataSet);
echo 'success';
}else{
echo 'false';
}
$curl->close();
}
composer
{
"require": {
"php": ">=5.4.0",
"topthink/framework": "^5.0",
"phpoffice/phpexcel": "^1.0",
"curl/curl": "^1.0"
},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
}
CREATE TABLE `record` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`dm` varchar(64) DEFAULT NULL COMMENT '代码',
`name` varchar(64) DEFAULT NULL COMMENT '名称',
`zxj` decimal(10,2) DEFAULT NULL COMMENT '最新价',
`zdf` decimal(10,2) DEFAULT NULL COMMENT '涨跌幅',
`zde` decimal(10,2) DEFAULT NULL COMMENT '涨跌额',
`cjl` double(20,0) DEFAULT NULL COMMENT '成交量',
`cje` decimal(20,2) DEFAULT NULL COMMENT '成交额',
`jk` decimal(10,2) DEFAULT NULL COMMENT '今开',
`zs` decimal(10,2) DEFAULT NULL COMMENT '昨收',
`zg` decimal(10,2) DEFAULT NULL COMMENT '最高',
`zd` decimal(10,2) DEFAULT NULL COMMENT '最低',
`data_time` datetime DEFAULT NULL COMMENT '交易日期',
`ctime` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4096 DEFAULT CHARSET=utf8;
db类https://packagist.org/packages/joshcam/mysqli-database-class
php抓取股票数据的更多相关文章
- 一个极其简洁的Python网页抓取程序,自己主动从雅虎財经抓取股票数据
本程序使用Python 2.7.6编写,扩展了Python自带的HTMLParser,自己主动依据预设的股票代码列表,从Yahoo Finance抓取列表中的数据日期.股票名称.实时报价.当日变化率. ...
- 写一个shell脚本利用wget抓取股票历史数据
今天,大数据部老大交给我一项任务——抓取股票历史数据.于是乎,我自行在网上找了一下,发现wget真真是一个非常强大的linux下载工具.我已经被深深震撼到了.下面叙述今天的一些过程,还是比较坎坷的. ...
- Scrapy 抓取股票行情
安装scrapy会出现错误,我们选择anaconda3作为编译环境,搜索scrapy安装(有错误自查) 创建scrapy爬虫项目: 调出cmd,到相应目录:输入: scrapy startprojec ...
- MATLAB爬虫爬取股票数据
近年来,大数据盛行,有关爬虫的教程层次不穷.那么,爬虫到底是什么呢? 什么是爬虫? 百度百科是这样定义的: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种 ...
- 吴裕雄--天生自然PYTHON爬虫:使用Scrapy抓取股票行情
Scrapy框架它能够帮助提升爬虫的效率,从而更好地实现爬虫.Scrapy是一个为了抓取网页数据.提取结构性数据而编写的应用框架,该框架是封装的,包含request异步调度和处理.下载器(多线程的Do ...
- Charles 如何抓取https数据包
Charles可以正常抓取http数据包,但是如果没有经过进一步设置的话,无法正常抓取https的数据包,通常会出现乱码.举个例子,如果没有做更多设置,Charles抓取https://www.bai ...
- 手把手教你用python打造网易公开课视频下载软件3-对抓取的数据进行处理
上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标 ...
- iOS开发——网络实用技术OC篇&网络爬虫-使用青花瓷抓取网络数据
网络爬虫-使用青花瓷抓取网络数据 由于最近在研究网络爬虫相关技术,刚好看到一篇的的搬了过来! 望谅解..... 写本文的契机主要是前段时间有次用青花瓷抓包有一步忘了,在网上查了半天也没找到写的完整的教 ...
- iOS开发——网络使用技术OC篇&网络爬虫-使用正则表达式抓取网络数据
网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...
随机推荐
- Ignoring query to other database
Ignoring query to other database 自己今天刚遇到,进入MySQL的时候,输入show databases; 产生如下错误 错误提示 Ignoring query to ...
- maven 插件深入了解
http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin http://www.infoq.com/cn/news/2011/05/xxb-mav ...
- C# 设计模式-策略者模式(Strategy)
策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. 策略模式是对算法的包装,是把使用算法的责任和 ...
- Mybatis七(MBG 逆向工程)
官方地址:http://www.mybatis.org/generator/ https://github.com/mybatis/generator/releases <1>编写mbg. ...
- shell环境变量
永久环境变量配置: /etc/profile /etc/bashrc 用户环境变量: ~/.bashrc
- python大法好——修改文件、函数
1.修改文件 补充上次没洗完的: 想要修改某个文件里一块地方,可以使用seek函数找到位置write函数修改. 是不是觉得这很简单? 但是如果你这样操作很可能会出现乱码. 因为由于字节数的不同,编码的 ...
- 使用STM32CubeMX生成待机开关功能
使用的开发板为MINISTM32 通过长按数秒KEY_UP 按键开机,并且通过 DS1 的闪烁指示程序已经开始运行,再次长按该键,则进入待机模式, DS1 关闭,程序停止运行.利用STM32的stan ...
- zookeeper windows7下集群搭建
模拟分布式环境!!! 搞了好几天,各种错误!!终于成功了. 环境: windows7 /centos/xsheel 安装了三个虚拟机... 1.下载zookeeper http://archi ...
- Erlang Error Records
1.No match of right hand value ... Erlang变量名需要以大写开头.
- 尚硅谷springboot学习20-web开发简介
使用SpringBoot 1).创建SpringBoot应用,添加我们需要的模块: 2).SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来 3).自己编写业 ...