$item) { $tempItem = substr($item, stripos($item, "=\"") + 2); //获取 var hq_str_sz000002="万 科A,30.780,30.800,30.510, ="之后部分 $tempItem = substr($tempItem, 0, strripos($tempItem, "\"")); //获取 万 科A,30.94,0.14,0.45,584039,178827"; ";之前部分 $tempItem = trim($tempItem); if (!empty($tempItem)) { $arr2[$index] = explode(",", $tempItem);//分割 $arr2[$index]['code'] = $codeList[$codeIndex]; $index++; } $codeIndex++; } return $arr2; } //获取全部股票代码和名称列表 static public function getStockCodeAndNameList($exchange, $sector, $start, $end) { $url = "http://hq.sinajs.cn/list="; $data['exchange'] = $exchange; $data['sector'] = $sector; $codeList = array(); $codeIndex = 0; for($code = $start;$code <= $end; $code++){ $codeStr = sprintf('%06s', $code); $url .= 's_'.$exchange.$codeStr.','; $codeList[$codeIndex] = $codeStr; $codeIndex++; } $contentList = self::curl_get_data_list($url, $codeList); foreach ($contentList as $key => $item) { $data['code'] = $item['code']; $data['name'] = trim($item[0]); if (!empty($item[0])) { //判断非法股票代码 Stock::updateCodeAndName($data); } } return; } /**** * @param $code * @return string * 判断股票的类型,属于创业板,科创板,主板,$code */ static public function get_boniu_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 string $code * @return mixed //上证指数表(boniu_index_sh) */ static public function get_boniu_index_sh($code="000001") { $url = "http://hq.sinajs.cn/list=s_sh".$code; $content3=sina::curl_get_data($url); $data['increase_value'] = floatval($content3[3]);//涨跌率 $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等 $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌 // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数) $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳 $data['open_price'] = floatval($data2[1]);//开盘价 $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价 $data['hightest_price'] = floatval($data2[4]);//今日最高价 $data['lowest_price'] = floatval($data2[5]);//今日最低价 $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位 $data['value'] = (int)($data2[9]);//成交金额以万为单位 return Index_sh::add($data); } /**** * @param string $code * @return mixed * 深成指数表(boniu_index_scz) */ static public function get_boniu_index_scz($code="399001") { $url = "http://hq.sinajs.cn/list=s_sz".$code; $content3=sina::curl_get_data($url); $data['increase_value'] = floatval($content3[3]);//涨跌率 $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等 $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌 // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数) $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳 $data['open_price'] = floatval($data2[1]);//开盘价 $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价 $data['hightest_price'] = floatval($data2[4]);//今日最高价 $data['lowest_price'] = floatval($data2[5]);//今日最低价 $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位 $data['value'] = (int)($data2[9]);//成交金额以万为单位 return Index_scz::add($data); } /*** * @param string $code * @return mixed * 上证50指数表(boniu_index_sh50) 000016 */ static public function get_boniu_index_sh50($code="000016") { $url = "http://hq.sinajs.cn/list=s_sh".$code; $content3=sina::curl_get_data($url); $data['increase_value'] = floatval($content3[3]);//涨跌率 $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等 $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌 // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数) $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳 $data['open_price'] = floatval($data2[1]);//开盘价 $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价 $data['hightest_price'] = floatval($data2[4]);//今日最高价 $data['lowest_price'] = floatval($data2[5]);//今日最低价 $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位 $data['value'] = (int)($data2[9]);//成交金额以万为单位 return Index_sh50::add($data); } /*** * @param string $code * @return mixed * //沪深300指数表(boniu_index_csi300) 399300 */ static public function get_boniu_index_csi300($code="399300") { $url = "http://hq.sinajs.cn/list=s_sz".$code; $content3=sina::curl_get_data($url); $data['increase_value'] = floatval($content3[3]);//涨跌率 $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等 $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌 // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数) $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳 $data['open_price'] = floatval($data2[1]);//开盘价 $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价 $data['hightest_price'] = floatval($data2[4]);//今日最高价 $data['lowest_price'] = floatval($data2[5]);//今日最低价 $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位 $data['value'] = (int)($data2[9]);//成交金额以万为单位 return Index_csi300::add($data); } // /*** * @param string $code * @return mixed * 创业板指数表(boniu_index_gem) 399006 */ static public function get_boniu_index_gem($code="399006") { $url = "http://hq.sinajs.cn/list=s_sz".$code; $content3=sina::curl_get_data($url); $data['increase_value'] = floatval($content3[3]);//涨跌率 $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等 $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌 // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数) $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳 $data['open_price'] = floatval($data2[1]);//开盘价 $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价 $data['hightest_price'] = floatval($data2[4]);//今日最高价 $data['lowest_price'] = floatval($data2[5]);//今日最低价 $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位 $data['value'] = (int)($data2[9]);//成交金额以万为单位 return Index_gem::add($data); } /**** * @param string $code * @return mixed * //科创50指数( boniu_index_kc50) 000688 */ static public function get_boniu_index_kc50($code="000688") { $url = "http://hq.sinajs.cn/list=s_sh".$code; $content3=sina::curl_get_data($url); $data['increase_value'] = floatval($content3[3]);//涨跌率 $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等 $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌 // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数) $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳 $data['open_price'] = floatval($data2[1]);//开盘价 $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价 $data['hightest_price'] = floatval($data2[4]);//今日最高价 $data['lowest_price'] = floatval($data2[5]);//今日最低价 $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位 $data['value'] = (int)($data2[9]);//成交金额以万为单位 return Index_kc50::add($data); } // /*** * @param $code * @param $date * 根据股票代码获取股票的实时信息 */ static public function get_info_code($code){ $stock_code= self::get_boniu_block($code); $url = "http://hq.sinajs.cn/list=" . $stock_code; $content3=sina::curl_get_data($url);//封装为函数,执行url获取结果并解析 return $content3; } /*** * @param $code * @param $date * @return mixed * 日k线表 day_k_******(每月存一张表,比如boniu_day_k_202011) * 抓取当天的数据,结合163的接口 * */ static public function get_day_k_base($code, $date) { $stock_code= self::get_boniu_block($code); $url = "http://hq.sinajs.cn/list=" . $stock_code; $content3=sina::curl_get_data($url);//封装为函数, if (empty($content3)) { throw new Exception('抓取的数据不能为空', 102); } $data['date'] = $content3[30]; $data['code'] = $code;//股票代码此时去掉sh,sz $data['name'] = $content3[0]; $data['open_price'] = floatval($content3[1]);//开盘价 $data['close_price'] = floatval($content3[3]);//3点之后的当前价格就是收盘价 $data['hightest_price'] = floatval($content3[4]);//今日最高价 $data['lowest_price'] = floatval($content3[5]);//今日最低价 $data['amount'] = floatval($content3[8]);//成交的股票数,以百为单位 $data['value'] = floatval($content3[9]);//成交金额以万为单位 //调用网易接口获取其他字段 $data163=Finance163::get_day_k_data($code); $data['close_price_qfq'] = floatval($data163["close_price_qfq"]);//成交金额以万为单位 $data['increase_price'] = floatval($data163["increase_price"]);//成交金额以万为单位 $data['increase_value'] = floatval($data163["increase_value"]);//成交金额以万为单位 $data['turnover'] = floatval($data163["turnover"]);//成交金额以万为单位 return Day_k_base::add($data, $date); } //除权除息表(boniu_xrxd_log) //st记录表(boniu_st_log) } ?>