Pārlūkot izejas kodu

日k的历史数据

wanggangtao 5 gadi atpakaļ
vecāks
revīzija
dfbd452900

+ 7 - 0
lib/day_k.class.php

@@ -58,5 +58,12 @@ class Day_k {
         return $id;
     }
 
+    static public function HistoryDayK($attrs)
+    {
+        $Table_day_k = new Table_day_k();
+        $id = $Table_day_k->HistoryDayK($attrs);
+        return $id;
+    }
+
 }
 ?>

+ 102 - 0
lib/input163HistoryDayK.class.php

@@ -0,0 +1,102 @@
+<?php
+/**
+ * @author:王刚涛
+ * 用于获取历史数据各种指数
+ * http://hq.sinajs.cn/list=s_sz000002
+ */
+
+
+class Input163HistoryDayK
+{
+
+    /****
+     * @param $code
+     * @return string
+     * 返回股票指数所属的板块,在股票代码前拼接0或者1
+     */
+    static public function stock_block($code)
+    {
+        $f = substr($code, 0, 1);
+        if ($f == "6") {
+            $stock_code = "1" . $code;
+        } else {
+            $stock_code = "0" . $code;
+        }
+        return $stock_code;
+    }
+    /****
+     * @param $url
+     * @return array|bool|string
+     * 对curl_setopt进行封装,消除代码冗余
+     */
+    static private function curl_get_data($url){
+        $curlHandle = curl_init();
+        curl_setopt($curlHandle, CURLOPT_URL, $url);
+        curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
+        curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
+        curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, false);
+        curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10);
+        $content = curl_exec($curlHandle);
+        curl_close($curlHandle);
+        $content1 = explode("\n", $content);//以换行符进行分割字符串
+        return $content1;
+    }
+
+    /***
+     * @param $stock_code
+     * @param $start_date
+     * @param $end_date
+     * @return array
+     * 历史数据日k
+     */
+    static public function HistoryDayK($stock_code,$start_date,$end_date)
+    {
+        $msg=array();
+        $code = self::stock_block($stock_code);
+        $url = "http://quotes.money.163.com/service/chddata.html?code=" . $code . "&start=" . $start_date . "&end=" . $end_date . "&fields=TOPEN;HIGH;LOW;TCLOSE;VATURNOVER;VOTURNOVER;CHG;PCHG";
+        //构建所要发送的url
+        var_dump($url);
+        die;
+        $content1=self::curl_get_data($url);
+        if (!empty($content1[1])) {
+            for ($i = count($content1) - 1; $i >0; $i--) {//排除日期,代码等标题栏
+                if (!empty($content1[$i])) {
+                    $content3 = explode(",", iconv("gbk", "utf-8", $content1[$i]));
+                }
+                else{
+                    continue;
+                }
+//                解析返回的历史数据
+                $data['timestamp']       = (int)strtotime($content3[0]);//当日零点的时间戳
+                $data['date']            = (int)date("Ymd",strtotime($content3[0]));//用于创建表
+                $data['code']            = explode("'",$content3[1])[1];
+                $data['name']            = $content3[2];
+                $data['open_price']      = floatval($content3[3]);
+                $data['highest_price']   = floatval($content3[4]);
+                $data['lowest_price']    = floatval($content3[5]);
+                $data['close_price']     = floatval($content3[6]);
+                $data['value']           = floatval($content3[7]);
+                $data['amount']          = floatval($content3[8]);
+                $data['increase_price']  = floatval($content3[9]);
+                $data['increase_ratio']  = floatval($content3[10]);
+                //将所要存储的数据放入一个数组中
+                $stock_name = $content3[1];
+                if ($data['close_price'] == 0) {//当收盘价为0的时候,表示此时的基于9-3点,所以不存储
+                    continue;
+                }
+                if (!empty($data)) {
+                    $msg= Day_k::HistoryDayK($data);//将这支股票的历史数据存入数据库
+
+                }
+            }
+        }
+        return $msg;
+    }
+
+
+
+
+
+}
+
+?>

+ 1 - 1
lib/input163Index.class.php

@@ -1,7 +1,7 @@
 <?php
 /**
  * @author:王刚涛
- * 用于获取当天各种指数
+ * 用于获取历史数据各种指数
  * http://hq.sinajs.cn/list=s_sz000002
  */
 

+ 33 - 1
lib/table/table_day_k.class.php

@@ -87,7 +87,7 @@ class Table_day_k extends Table {
     /****
      * @param $attr
      * @return mixed
-     *
+     *插入当天的数据
      */
     public function insert($attr){
         $param = array (
@@ -110,6 +110,38 @@ class Table_day_k extends Table {
         return $msg;
     }
 
+
+
+    /***
+     * @param $attr
+     * @return mixed
+     * day_k的历史数据
+     */
+    public function HistoryDayK($attr){
+        $param = array (
+            'day_k_timestamp '         => array('number', $attr['timestamp']),
+            'day_k_date'               => array('number', strtotime($attr['date'])),
+            'day_k_code'               => array('string', $attr['code']),
+            'day_k_name'               => array('string', $attr['name']),
+            'day_k_open_price'         => array('number', $attr['open_price']),
+            'day_k_highest_price'      => array('number', $attr['highest_price']),
+            'day_k_lowest_price'       => array('number', $attr['lowest_price']),
+            'day_k_close_price'        => array('number', $attr['close_price']),
+            'day_k_value'              => array('number', $attr['value']),
+            'day_k_amount'             => array('number', $attr['amount']),
+            'day_k_increase_price'     => array('number', $attr['increase_price']),
+            'day_k_increase_ratio'     => array('number', $attr['increase_ratio']),
+        );
+        $msg=$this->pdo->sqlinsert($this->table_fullname, $param);
+        return $msg;
+    }
+    /***
+     * @param $code
+     * @param $start_date
+     * @param $end_date
+     * @return array
+     *
+     */
     public function get_day_k_info($code,$start_date,$end_date)
     {
         //查询语句必须用sql_check_input检查参数

+ 19 - 0
task/task_get_history_day_k.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: 王刚涛
+ * Date: 2020/12/1
+ * Time: 19:35
+ * 获取指数历史的数据
+ */
+require('../init.php');
+
+$start_date=20140101;
+$end_date=date("Ymd",time());
+$indexList=Stock::getStockCodeList();//获取指数代码
+foreach ($indexList as $key=>$value){
+    Input163HistoryDayK::HistoryDayK($value["code"],$start_date,$end_date);
+}
+
+
+?>