Skip to content

S. 黑色商品现货数据

PKUJohnson edited this page Jun 22, 2018 · 1 revision

OpenDataTools通过spot接口,支持黑色商品现货数据的获取,要求版本0.3.7以上。

数据来源:http://www.96369.net/(西本新干线)

准备工作

需要先安装tesseract-ocr软件,用于验证码的自动识别。

tesseract-ocr项目地址:https://github.com/tesseract-ocr/

安装步骤如下:

  1. pip install pytesseract
  2. 安装tesseract-ocr,下载地址3.0.5
  3. 将tesseract-ocr的安装目录加入到PATH中。
  4. 下载语言包。下载地址:https://github.com/tesseract-ocr/tessdata,保存在某个目录。(例如d:\tessdata),本项目主要用到了英语识别,需要安装eng开头的语言包。
  5. 设置TESSDATA_PREFIX环境变量,使其指向语言包所在的目录。(例如d:\tessdata)

严格按照以上步骤,就可以成功安装tesseract-ocr。

导入spot接口

from opendatatools import spot

详细接口

  1. 获取现货指标
df_indicator = spot.get_commodity_spot_indicator()
df_indicator.head(20)

  1. 获取现货数据
# 例如:铁矿指数
df, msg = spot.get_commodity_spot_indicator_data('61')
df.head(20)

  1. 获取现货数据并画图
# 例如:煤炭指数
def draw_indicator(id):
    
    from matplotlib.pylab import mpl
    # 指定默认字体
    mpl.rcParams['font.sans-serif'] = ['FangSong']
    # 解决保存图像是负号'-'显示为方块的问题
    mpl.rcParams['axes.unicode_minus'] = False
    
    # 获取现货数据
    df, msg = spot.get_commodity_spot_indicator_data(id)
    import datetime
    df['date'] = df['date'].apply(lambda x : datetime.datetime.strptime(x, '%Y-%m-%d'))
    df['value'] = df['value'].apply(lambda x : float(x))
    df.set_index('date', inplace=True)
    
    df_indicator = spot.get_commodity_spot_indicator()
    df_indicator.set_index('indicator_id', inplace=True)
    name = df_indicator.loc[id]['indicator_name']
    
    # 画图
    import matplotlib.pyplot as plt
    plt.figure(figsize=(16,8))
    plt.plot(df.index, df['value'])
    plt.title(name)

draw_indicator('1002')