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抓取股票数据的更多相关文章

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

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

  2. 写一个shell脚本利用wget抓取股票历史数据

    今天,大数据部老大交给我一项任务——抓取股票历史数据.于是乎,我自行在网上找了一下,发现wget真真是一个非常强大的linux下载工具.我已经被深深震撼到了.下面叙述今天的一些过程,还是比较坎坷的. ...

  3. Scrapy 抓取股票行情

    安装scrapy会出现错误,我们选择anaconda3作为编译环境,搜索scrapy安装(有错误自查) 创建scrapy爬虫项目: 调出cmd,到相应目录:输入: scrapy startprojec ...

  4. MATLAB爬虫爬取股票数据

    近年来,大数据盛行,有关爬虫的教程层次不穷.那么,爬虫到底是什么呢? 什么是爬虫? 百度百科是这样定义的: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种 ...

  5. 吴裕雄--天生自然PYTHON爬虫:使用Scrapy抓取股票行情

    Scrapy框架它能够帮助提升爬虫的效率,从而更好地实现爬虫.Scrapy是一个为了抓取网页数据.提取结构性数据而编写的应用框架,该框架是封装的,包含request异步调度和处理.下载器(多线程的Do ...

  6. Charles 如何抓取https数据包

    Charles可以正常抓取http数据包,但是如果没有经过进一步设置的话,无法正常抓取https的数据包,通常会出现乱码.举个例子,如果没有做更多设置,Charles抓取https://www.bai ...

  7. 手把手教你用python打造网易公开课视频下载软件3-对抓取的数据进行处理

    上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标 ...

  8. iOS开发——网络实用技术OC篇&网络爬虫-使用青花瓷抓取网络数据

    网络爬虫-使用青花瓷抓取网络数据 由于最近在研究网络爬虫相关技术,刚好看到一篇的的搬了过来! 望谅解..... 写本文的契机主要是前段时间有次用青花瓷抓包有一步忘了,在网上查了半天也没找到写的完整的教 ...

  9. iOS开发——网络使用技术OC篇&网络爬虫-使用正则表达式抓取网络数据

    网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...

随机推荐

  1. GPUImage中曝光滤镜实现——GPUImageExposureFilter

    核心代码: varying highp vec2 textureCoordinate; uniform sampler2D inputImageTexture; uniform highp float ...

  2. leetcode984

    public class Solution { private string M1(int A, int B) { StringBuilder sb = new StringBuilder(); ; ...

  3. 20165304 实验二 Java面向对象程序设计

    一.面向对象程序设计1--单元测试和TDD 实验要求 1.参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 完成单元测试的学习 2 ...

  4. java 父类引用指向子类对象---动态绑定

    知识点: 1.java 中父类引用指向子类对象时动态绑定针对的只是子类重写的成员方法: 2.父类引用指向子类对象时,子类如果重写了父类的可重写方法(非private.非 final 方法),那么这个对 ...

  5. 浅谈transient关键字

    1,用途 当一个对象实现了Serilizable接口,这个对象就可以被序列化.而有时候我们可能要求:当对象被序列化时(写入字节序列到目标文件)时,有些属性需要序列化,而其他属性不需要被序列化,打个比方 ...

  6. js 验证码倒计时

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Zookpeer集群节点

    Adaptive Communication Environment(自适配通信环境),简称ACE. reference artfile:zookeeper单节点与集群的安装https://blog. ...

  8. Spring容器中获取bean实例的方法

    // 得到上下文环境 WebApplicationContext webContext = ContextLoader .getCurrentWebApplicationContext(); // 使 ...

  9. 15.过滤器-基础.md

    目录 基础 实例 图解 核心API interface Filter过滤器接口 interface FilterConfig获取过滤器初始化信息 interface FilterChain 过滤器参数 ...

  10. 基于ajax请求异常捕获

    第一步:controller中 @RequestMapping("/ajaxerror") public String ajaxerror() { return "thy ...