Browse Source

股票静态数据

wanggangtao 5 years ago
parent
commit
7ef14129b6
4 changed files with 107 additions and 2 deletions
  1. 23 0
      data/get_stock_static_data.php
  2. 0 2
      lib/common/mypdo.class.php
  3. 77 0
      lib/financeTencent.class.php
  4. 7 0
      lib/stock.class.php

+ 23 - 0
data/get_stock_static_data.php

@@ -0,0 +1,23 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: 王刚涛
+ * Date: 2020/11/24
+ * Time: 19:16
+ * 获取股票的基本信息
+ */
+require('../init.php');
+
+
+$codeList=Stock::getStockCodeList();//获取所有股票代码
+if (empty($codeList))
+{
+    throw new Exception('参数列表不能为空', 102);
+}
+//遍历股票代码
+
+foreach($codeList as $key => $val){
+        $code=intval($val);
+        FinanceTencent::get_stock_data($code);
+
+}

+ 0 - 2
lib/common/mypdo.class.php

@@ -234,8 +234,6 @@ class MyPdo {
 		$wheres_str = implode(' and ', $wheres);
 
 		$sql .= ' where '.$wheres_str;
-		
-
 		try {
 			$num = $this->pdo->exec($sql);
 

+ 77 - 0
lib/financeTencent.class.php

@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * Created by PhpStorm.
+ * User: 王刚涛
+ * Date: 2020/11/29
+ * Time: 18:51
+ */
+class FinanceTencent
+{
+
+    /****
+     * @param $code
+     * @return string
+     * 判断股票的类型,属于创业板,科创板,主板,$code
+     */
+    static public function stock_block($code)
+    {
+        if (strncmp($code, "30", 2) == 0) {
+            //创业板
+            $code = "sz" . $code;
+        } else if (strncmp($code, "68", 2) == 0) {
+            //科创板
+            $code = "sh" . $code;
+        } else if (strncmp($code, "60", 2) == 0) {
+            //主板
+            $code = "sh" . $code;
+        } else if (strncmp($code, "00", 2) == 0) {
+            //中小板
+            $code = "sz" . $code;
+        }
+        return $code;
+
+    }
+
+    /****
+     * @param $url
+     * @return array|bool|string
+     * 对curl_setopt进行封装,消除代码冗余
+     */
+    static private function curl_get_data($url)
+    {
+        $ch = curl_init();
+        curl_setopt($ch, CURLOPT_URL, $url);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+        $content = curl_exec($ch);
+        curl_close($ch);
+        $content1 = substr($content, stripos($content, "=\"") + 2);         //获取 var hq_str_sz000002="万 科A,30.780,30.800,30.510,  ="之后部分
+        $content2 = explode("~", iconv("gbk", "utf-8", $content1));//以换行符进行分割字符串
+        return $content2;
+    }
+
+
+    /***
+     * @param $stock_code
+     * @return mixed
+     * 获取股票的基本静态数据,
+     */
+    static public function get_stock_data($stock_code)
+    {
+        $data=array();
+        $code = self::stock_block($stock_code);
+        $url = "http://qt.gtimg.cn/q=" . $code;
+        //市盈率,流通市值,总市值,市净率
+        $content1 = self::curl_get_data($url);
+//      解析返回的历史数据
+        if (!empty($content1)) {
+            $data["pe_static"] = floatval($content1[39]);//市盈率
+            $data["tradable_value"] = floatval($content1[44]);//流通市值
+            $data["total_value"] = floatval($content1[45]);//总市值
+            $data["pb"] = floatval($content1[46]);//市净率
+        }
+        return Stock::update($stock_code,$data);
+    }
+}

+ 7 - 0
lib/stock.class.php

@@ -19,6 +19,13 @@ class Stock {
         return $Table_stock->getInfoById($id);
     }
 
+    static public function update($stock_code,$attrs)
+    {
+        if (empty($attrs)) throw new Exception('参数不能为空', 102);
+        $Table_stock = new Table_stock();
+        $id = $Table_stock->update($stock_code,$attrs);
+        return $id;
+    }
 
     static public function add($attrs)
     {