资讯专栏INFORMATION COLUMN

Python 从 sina 股票数据接口读取数据,并保存到 MySQL 数据库

kviccn / 2437人阅读

摘要:说明从的数据接口获取数据,之后,保存到数据库文件年月日文件年月日创建连接创建游标提交,不然无法保存新建或者修改的数据关闭游标关闭连接

说明

从 sina 的数据接口获取数据,之后,保存到 MySql 数据库

文件:getDataFromSina.py
"""
Created on 2018年2月11日

@author: Livon
"""

import util
import time

for i in range( 1, 9999 ):    
    
    print( time.strftime("%H:%M",time.localtime(time.time())) )
    
    url = util.sinaStockUrl( pageNum = i )    
    stockData = util.sinaStockData( url = url )
    if( stockData == "null" ):
        break        
    effect_rows = util.dbStore( str_stocks = stockData )
    time.sleep(3)
    
print( "finished." )
文件:util.py
"""
Created on 2018年2月11日

@author: Livon
"""
   
import urllib.request

import re
import pymysql

import time

def sinaStockUrl( pageNum ):
    
    print( "pageNum : " + str( pageNum ))
    
    rows = 10
    
    url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?"
    url += "page=" + str( pageNum )
    url += "&num=" + str( rows )
    url += "&sort=symbol&asc=1&node=hs_a&symbol=&_s_r_a=init"

    print( url )
    
    return url

def sinaStockData( url ):
    
    # http://www.cnblogs.com/sysu-blackbear/p/3629420.html
    stockDataResponse = urllib.request.urlopen( url )
    stockData = stockDataResponse.read()
    # stockData = stockDataResponse.decode("utf8")
    stockData = stockData.decode("gbk")
    # stockData = stockData.decode("gb2312")

    print( stockData )
    
    return stockData

  
def dbStore( str_stocks ):
    
    
    print( type( str_stocks ))
        
    stocks = re.findall("[(.*?)]",str_stocks )
    stocks = re.findall("{(.*?)}",stocks[0])    
    
    # 创建连接
    conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="root", db="stock", charset="utf8")
    # 创建游标
    cursor = conn.cursor()
        
    for i in range( 0, len( stocks ) ):
        print( "No." + str(i))
        properties = stocks[i].split(",")            
#         print( properties )         
#         print( type( properties ))
        effect_rows = insertDb( properties, cursor )
#         time.sleep(1)
        
    # 提交,不然无法保存新建或者修改的数据
    conn.commit()
  
    # 关闭游标
    cursor.close()
    # 关闭连接
    conn.close()    
    
    return effect_rows


  
    
def insertDb( properties, cursor ):
    
    arr_values = []
    arr_columns = []
    
    for j in range( 0, len( properties) ):
        
#         print( "propertie["+ str(j)+"]: " + properties[j] )
#         key_value = properties[j].split(":")
#         print( key_value[0] + " -> " + key_value[1] )
        key = properties[j][:properties[j].find(":")]
        value = properties[j][properties[j].find(":")+1:]
        value = value.replace(""", "")
#         print( key + " -> " + value )
#         sql += """ + value + """
        arr_columns.append( "`" + key + "`" )
#         arr_columns.append( key )
        arr_values.append( """ + value + """ )
        
    sql = "insert into stock_sina "
    sql = sql + " ( " + ",".join( arr_columns ) + " ) VALUES ( " + ",".join( arr_values ) + " ) "
    
    print( sql )
       
    effect_row = cursor.execute( sql )
    
    return effect_row

        

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/47539.html

相关文章

  • 互联网获取股票数据(历史数据Python + MySQL

    摘要:目标从互联网网易数据接口获取股票历史数据,包括开盘价最高价最低价收盘价等等环境记录数条,以该表为基础,制作清单。 目标 从互联网(网易数据接口)获取股票历史数据,包括开盘价、最高价、最低价、收盘价等等 环境 Python 3.6MySQL 5.6.34 table: stock_list showImg(https://segmentfault.com/img/bV3XbB?w=755...

    voyagelab 评论0 收藏0
  • 互联网获取股票数据(历史数据Python + MySQL

    摘要:目标从互联网网易数据接口获取股票历史数据,包括开盘价最高价最低价收盘价等等环境记录数条,以该表为基础,制作清单。 目标 从互联网(网易数据接口)获取股票历史数据,包括开盘价、最高价、最低价、收盘价等等 环境 Python 3.6MySQL 5.6.34 table: stock_list showImg(https://segmentfault.com/img/bV3XbB?w=755...

    weapon 评论0 收藏0
  • 磨刀霍霍:爬爬爬爬爬爬虫爬起来~

    摘要:目标很简单,因为我想要爬一下证券化率,然后可视化输出结果。证券化率的基础就是上市公司的总市值,对于证券化率其实还蛮多说法的,比如雪球的这篇文。我们可以利用这个回调函数来显示当前的下载进度。 写在前面的叨叨 折腾了这么久,我终于在喝完一听快乐肥宅水后下定决心来学习写爬虫了。目标很简单,因为我想要爬一下证券化率,然后可视化输出结果。证券化率的基础就是上市公司的总市值,对于证券化率其实还蛮多...

    Allen 评论0 收藏0
  • Python财经数据接口包TuShare的使用

    摘要:本例以数据库为代表,展示将获取到的股票数据存入数据库的方法其他类型数据库请参考官网文档的部分。存入数据库追加数据到现有表财经数据接口包的使用存入财经数据接口包的使用 安装TuShare 方式1:pip install tushare 方式2:访问https://pypi.python.org/pypi/tushare/下载安装 方式3:将源代码下载到本地python setup.py ...

    20171112 评论0 收藏0
  • 量化交易之股票数据的获取——同花顺软件

    摘要:将另存为格式时,文件将工作表中的单元格所显示的文本和数值以逗号分离进行保存。方法此处使用模块的函数读取文件,函数以字典形式返回,字典的键则是这个单元格的标题即列头,每一个单元格内容放在字典的值内。 前言 数据是进行量化交易的基础和关键,目前国内做量化产品的金融机构大部分是从券商获取高频实时行情数据的,另外很多金融网站也提供了数据接口,可以调用接口方式获取,也可以用爬虫的方式获取。文本讲...

    Chaz 评论0 收藏0

发表评论

0条评论

kviccn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<