zoukankan      html  css  js  c++  java
  • 获取历史数据

    # encoding:utf8
    
    #部分股票数据历史价格有误,尤其是2011年以前的数据,等一些历史数据
    #无论是yahoo还是新浪的
    
    
    __author__ = 'nooper'
    import cStringIO
    import csv
    
    from bs4 import BeautifulSoup
    
    from httpGet import httpGetContent
    
    
    #
    years = ["2010", "2011", "2012", "2013"]
    #季度
    quarter = [1, 2, 3, 4]
    
    
    def stock_day_history_sina(stock_code, year, qr):
        """
        stockcode:股票代码
        market:市场
        year:2013
        qr:季度1,2,3,4格式
        货的股票历史数据
        返回数据格式
        日期2013-03-29
        开盘:10.030
        最高:10.210
        停盘:10.130
        最低9.910
        数据量131028760
        价格:1315731584
        API:http://money.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/600000.phtml?year=2013&jidu=1
        """
        #todo 没有复权价格
    
    
        url = "http://money.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/%s.phtml?year=%s&jidu=%s" 
              % (stock_code, year, qr)
        content = httpGetContent(url=url)
        if content:
            soap = BeautifulSoup(content)
            table = soap.select('table#FundHoldSharesTable>tbody')
            if table:
                tr_list = table[0].select('tr')
                for i, tr in enumerate(tr_list):
                    stock = {}
                    if i == 0 or i == 1:
                        continue
                    td_list = tr.select('td')
    
                    for j, td in enumerate(td_list):
                        if j == 0: #日期
                            stock['date'] = td.div.a.text
                        elif j == 1: #开盘价格
                            stock['start'] = float(td.div.text)
                        elif j == 2: #
                            stock['high'] = float(td.div.text)
                        elif j == 3:
                            stock['end'] = float(td.div.text)
                        elif j == 4:
                            stock['low'] = float(td.div.text)
                        elif j == 5:
                            stock['rate'] = int(round(int(td.div.text) / 100.0, 0))
                        elif j == 6:
                            stock['money'] = int(round(int(td.div.text) / 10000.0, 0))
                    yield stock
    
    
    # todo 完成测试
    def stock_day_history_Yahoo(code, market):
        """
        雅虎股票数据接口
        得到yahoo股票的历史数据信息
        深市数据链接:http://table.finance.yahoo.com/table.csv?s=000001.sz
        上市数据链接:http://table.finance.yahoo.com/table.csv?s=600000.ss
        Date 日期
        Open 开盘价格
        High 最高价格
        Low  最低价格
        Close 结束价格
        Volume 量
        Adj Close 收盘加权价格
        """
        if market not in ('sz', 'ss'):
            return
        url = "http://table.finance.yahoo.com/table.csv?s=%s.%s" % (code, market)
        content = httpGetContent(url=url)
        if content:
            data = cStringIO.StringIO(content)
            reader = csv.reader(data)
            for i, row in enumerate(reader):
                stock_dict = {}
                if i == 0:
                    continue
                stock_dict['date'] = row[0]             # 日期
                stock_dict['open'] = float(row[1])      # 开盘价格
                stock_dict['high'] = float(row[2])      # 最高价格
                stock_dict['low'] = float(row[3])       # 最低价格
                stock_dict['close'] = float(row[4])     # 结束价格
                stock_dict['volume'] = float(row[5])    #
                stock_dict['adj_close'] = float(row[6]) # 几日收盘加权价格?
                yield stock_dict
    
    
    def main():
        pass
        # code = getStockDayHistoryByYahoo('601989', 'ss')
        # for cod in code:
        #     print cod
    
    
    if __name__ == "__main__":
        main()
    # encoding:utf8
       
      #部分股票数据历史价格有误,尤其是2011年以前的数据,等一些历史数据
      #无论是yahoo还是新浪的
       
       
      __author__ = 'nooper'
      import cStringIO
      import csv
       
      from bs4 import BeautifulSoup
       
      from httpGet import httpGetContent
       
       
      #年
      years = ["2010", "2011", "2012", "2013"]
      #季度
      quarter = [1, 2, 3, 4]
       
       
      def stock_day_history_sina(stock_code, year, qr):
      """
      stockcode:股票代码
      market:市场
      year:2013
      qr:季度1,2,3,4格式
      货的股票历史数据
      返回数据格式
      日期2013-03-29
      开盘:10.030
      最高:10.210
      停盘:10.130
      最低9.910
      数据量131028760
      价格:1315731584
      API:http://money.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/600000.phtml?year=2013&jidu=1
      """
      #todo 没有复权价格
       
       
      url = "http://money.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/%s.phtml?year=%s&jidu=%s"
      % (stock_code, year, qr)
      content = httpGetContent(url=url)
      if content:
      soap = BeautifulSoup(content)
      table = soap.select('table#FundHoldSharesTable>tbody')
      if table:
      tr_list = table[0].select('tr')
      for i, tr in enumerate(tr_list):
      stock = {}
      if i == 0 or i == 1:
      continue
      td_list = tr.select('td')
       
      for j, td in enumerate(td_list):
      if j == 0: #日期
      stock['date'] = td.div.a.text
      elif j == 1: #开盘价格
      stock['start'] = float(td.div.text)
      elif j == 2: #
      stock['high'] = float(td.div.text)
      elif j == 3:
      stock['end'] = float(td.div.text)
      elif j == 4:
      stock['low'] = float(td.div.text)
      elif j == 5:
      stock['rate'] = int(round(int(td.div.text) / 100.0, 0))
      elif j == 6:
      stock['money'] = int(round(int(td.div.text) / 10000.0, 0))
      yield stock
       
       
      # todo 完成测试
      def stock_day_history_Yahoo(code, market):
      """
      雅虎股票数据接口
      得到yahoo股票的历史数据信息
      深市数据链接:http://table.finance.yahoo.com/table.csv?s=000001.sz
      上市数据链接:http://table.finance.yahoo.com/table.csv?s=600000.ss
      Date 日期
      Open 开盘价格
      High 最高价格
      Low 最低价格
      Close 结束价格
      Volume 量
      Adj Close 收盘加权价格
      """
      if market not in ('sz', 'ss'):
      return
      url = "http://table.finance.yahoo.com/table.csv?s=%s.%s" % (code, market)
      content = httpGetContent(url=url)
      if content:
      data = cStringIO.StringIO(content)
      reader = csv.reader(data)
      for i, row in enumerate(reader):
      stock_dict = {}
      if i == 0:
      continue
      stock_dict['date'] = row[0] # 日期
      stock_dict['open'] = float(row[1]) # 开盘价格
      stock_dict['high'] = float(row[2]) # 最高价格
      stock_dict['low'] = float(row[3]) # 最低价格
      stock_dict['close'] = float(row[4]) # 结束价格
      stock_dict['volume'] = float(row[5]) # 量
      stock_dict['adj_close'] = float(row[6]) # 几日收盘加权价格?
      yield stock_dict
       
       
      def main():
      pass
      # code = getStockDayHistoryByYahoo('601989', 'ss')
      # for cod in code:
      # print cod
       
       
      if __name__ == "__main__":
      main()
  • 相关阅读:
    手动渗透测试漏洞
    博弈论一 [ 巴什游戏 ]
    [Error]EOL while scanning string literal
    Swift
    Swift
    Swift
    Swift
    Swift
    Swift
    Swift
  • 原文地址:https://www.cnblogs.com/ilovecpp/p/12776167.html
Copyright © 2011-2022 走看看