1、创建数据表

股票列表数据表
CREATE TABLE `fa_shares` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL COMMENT '股票名称',
  `code` varchar(30) DEFAULT NULL COMMENT '股票代码',
  `now_price` decimal(10,3) DEFAULT NULL COMMENT '今天价格',
  `yes_price` decimal(10,3) DEFAULT NULL COMMENT '昨天价格',
  `now_time` varchar(30) DEFAULT NULL COMMENT '更新时间',
  `size` varchar(10) DEFAULT NULL COMMENT '涨跌幅',
  `nover_num` int(11) DEFAULT NULL COMMENT '成交量',
  `nover_price` varchar(255) DEFAULT NULL COMMENT '成交额',
  `nover_rate` decimal(10,2) DEFAULT NULL COMMENT '换手率',
  `TTM` decimal(10,2) DEFAULT NULL COMMENT '市盈率',
  `market` decimal(10,2) DEFAULT NULL COMMENT '总市值',
  `ratio` decimal(10,2) DEFAULT NULL COMMENT '市净率',
  `pe_move` decimal(10,2) DEFAULT NULL COMMENT '市盈率(动)',
  `pr_quiet` decimal(10,2) DEFAULT NULL COMMENT '市盈率(静)',
  `update_time` varbinary(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;

股票详情接口
CREATE TABLE `fa_shares_detail` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL COMMENT '股票名称',
  `now_price` decimal(10,3) DEFAULT NULL COMMENT '今天价格',
  `yes_price` decimal(10,3) DEFAULT NULL COMMENT '昨天价格',
  `now_time` varchar(30) DEFAULT NULL COMMENT '更新时间',
  `size` varchar(10) DEFAULT NULL COMMENT '涨跌幅',
  `nover_num` int(11) DEFAULT NULL COMMENT '成交量',
  `nover_price` varchar(255) DEFAULT NULL COMMENT '成交额',
  `nover_rate` decimal(10,2) DEFAULT NULL COMMENT '换手率',
  `TTM` decimal(10,2) DEFAULT NULL COMMENT '市盈率',
  `market` decimal(10,2) DEFAULT NULL COMMENT '总市值',
  `ratio` decimal(10,2) DEFAULT NULL COMMENT '市净率',
  `pe_move` decimal(10,2) DEFAULT NULL COMMENT '市盈率(动)',
  `pr_quiet` decimal(10,2) DEFAULT NULL COMMENT '市盈率(静)',
  `update_time` varbinary(100) DEFAULT NULL,
  `date` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=71 DEFAULT CHARSET=utf8;

 

 

 

# -*- coding: utf-8 -*-
import requests
import re
import datetime
import mysql.connector
import time
def array_to_insert_params(arr, table_name):
  

  
    header = arr[0]
    values = arr[1:]
    field_str = ', '.join(header)
    value_str_list = []
    for value in values:
        value_str_list.append('(' + ', '.join([f"'{v}'" for v in value]) + ')')
    value_str = ', '.join(value_str_list)
    return f"INSERT INTO {table_name} ({field_str}) VALUES {value_str};"

def array_to_update_params(arr, table_name, primary_keys):
   

   
    header = arr[0]
    values = arr[1:]
    update_str_list = []
    for value in values:
        value_dict = dict(zip(header, value))
        primary_key_values = [value_dict.pop(key) for key in primary_keys]
        update_str = ', '.join([f"{k} = '{v}'" for k, v in value_dict.items()])
        where_str = ' AND '.join([f"{key} = '{value}'" for key, value in zip(primary_keys, primary_key_values)])
        update_str_list.append(f"{update_str} WHERE {where_str}")
    return f"UPDATE {table_name} SET {', '.join(update_str_list)};"
def array_gj_to_update_params(arr, table_name, primary_keys, primary_key_rels=None):
 

   
    header = arr[0]
    values = arr[1:]
    update_str_list = []
    for value in values:
        value_dict = dict(zip(header, value))
        primary_key_values = [value_dict.pop(key) for key in primary_keys]
        if primary_key_rels is None:
            primary_key_rels = ['='] * len(primary_keys)
        where_str = ' AND '.join([f"{key} {rel} '{value}'" for key, rel, value in zip(primary_keys, primary_key_rels, primary_key_values)])
        update_str = ', '.join([f"{k} = '{v}'" for k, v in value_dict.items()])
        update_str_list.append(f"{update_str} WHERE {where_str}")
    return f"UPDATE {table_name} SET {', '.join(update_str_list)};"
mydb = mysql.connector.connect(

)
mycursor = mydb.cursor()



#x = datetime.datetime.now()
#date=x.strftime("%Y-%m-%d")

def getgp(stock_code):
    url = 'https://qt.gtimg.cn/q='+stock_code
   
    headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
    }
    response = requests.get(url, headers=headers)
   
    content = response.text
     
    contents=content.split(';')
    for n in contents:
      if(len(n)>10):
        pattern = r'v_\w{2,}="(.+?)"'
        resultOne = re.findall(pattern, n)
        data = resultOne[0].split('~')
        date=data[30]
        date = date[:8]
        if len(data) > 0:
           
           mycursor.execute("SELECT * FROM fa_shares where name='"+data[1]+"'")
           myresult = mycursor.fetchone()
           if(myresult):
              size=str(round((float(data[3]) - float(data[4])) / float(data[4]) * 100, 2))+'%'
              arr = [['now_price','yes_price','now_time','size','nover_num','nover_price','nover_rate','TTM','market','ratio','pe_move','pr_quiet','update_time','name'],
                     [data[3],data[4],data[30],size, data[36], data[37],data[38],data[39],data[45],data[46],data[52],data[53],int(time.time()),data[1]]
                    ]
              res=array_to_update_params(arr,"fa_shares",["name"])
              
              mycursor.execute(res)

              mycursor.execute("SELECT * FROM fa_shares_detail where name='"+data[1]+"' and date='"+date+"'")
              myresult2 = mycursor.fetchone()
              arr = [['now_price','yes_price','now_time','size','nover_num','nover_price','nover_rate','TTM','market','ratio','pe_move','pr_quiet','update_time','name','date'],
                     [data[3],data[4],data[30],size, data[36], data[37],data[38],data[39],data[45],data[46],data[52],data[53],int(time.time()),data[1],date]
                    ]
              if(myresult2):
                  res=array_to_update_params(arr,"fa_shares_detail",["name"])
                  mycursor.execute(res)
              else:
                  res=array_to_insert_params(arr,"fa_shares_detail")
                  mycursor.execute(res)
                  
                  
              
                  
        
mycursor.execute("SELECT * FROM fa_shares")
code = mycursor.fetchall()

c=""
for n in code:
     c=n[2]+','+c
print(c)
getgp(stock_code=c)

Logo

加入社区!打开量化的大门,首批课程上线啦!

更多推荐