¿Cómo extraer mediante programación datos en tiempo real de software de stock gratuito?
El código de muestra es el siguiente:
Creado el jueves 23 de julio de 2007 09:17:27 2015
@Autor: jet
"""
DAY_PRICE_COLS = ['fecha','abrir','alto','cerrar','bajo','volumen',
'cambiar' ,' chg','ma5','ma10','ma20',
vma5','vma10','vma20','facturación']
DAY_PRICE_URL = 'SAPI .finance.s/s/?code=s&' tipo=último'
INDEX_KEY = ['SH', 'SZ', 'HS300', 'SZ50', 'GEB', 'SMEB']
INDEX_LIST = {'SH':'SH 000001','SZ':'sz399001','HS300':'sz399300',
'SZ50': 'sh000016', 'GEB': 'sz399006', 'SMEB': 'sz399005'}
INDEX_DAY_PRICE_COLS= ['fecha','apertura','alta','cerrada','baja', 'volumen',
'chg','chg','ma5','ma10','ma20',
vma5','vma10','vma20' ]
K_TYPE_KEY = ['D', 'W', 'M']
K_TYPE_MIN_KEY = ['5', '15', '30', '60']
K_TYPE = {'D': 'akdaily', 'W': 'akweekly', 'M': 'akmonthly'}
MIN_PRICE_URL = ' SAPI s/AK MIN?scode=s amp. type=s
PAGE_TYPE={'','ifeng':'ifeng.com'}
URL_ERROR_MSG='Error al obtener, verifique el estado de la red o el puerto API ¡La URL no coincide! '
Get_history_data.py
# -*-Encoding: utf-8 -*-
"""
Creado el jueves , 23 de julio de 2007 09:15:40 2015
@author:jet
"""
Importar constantes como tipos de contacto
Importar pandas como pd
Importar json
Importar urlopen desde urllib2, solicitud
def get_hist_data(código = Ninguno, inicio = Ninguno, fin = Ninguno, ktype = 'D '):
"""
Función:
Obtener datos históricos de transacciones de acciones individuales
-
Entrada:
-
Código: Cadena
Código de stock, por ejemplo: 601989.
Inicio: Cadena
Formato de fecha de inicio: cuando AAAA-MM-DD está vacío, toma los datos de fecha más antiguos proporcionados por la API.
Fin: cadena
Formato de fecha de finalización: Cuando AAAA-MM-DD está vacío, se toman los datos del último día de negociación.
Ktype: cadena (predeterminado=D, la función se unifica automáticamente a mayúsculas)
Tipo de datos D=K-línea diaria, W=K-línea semanal, M=K mensual -línea, 5= 5 minutos, 15=15 minutos.
30=30 minutos, 60=60 minutos
Salida:
-
Marco de datos
Fecha Fecha
Precio de apertura
Precio más alto
Precio de cierre
Precio más bajo
Fluctuación de cambio
P_chg sube y baja
Precio promedio de cinco días de Ma5
Precio promedio de 10 días de Ma10
Precio promedio de 20 días de Ma20
VMA5 promedio de 5 días
Vma10 promedio de días
Vma20 promedio de 20 días
Tasa de rotación (el índice no tiene este ítem)
"""
código = código _ a _ código API(código . superior())
ktype = ktype.upper()
url = ' '
url = get_url(ktype, código)
Imprimir(url)
js = json.loads(ping_API(url))
cols = []
if len(js[' record '][0])== 14:
cols = ct_index_day_price_column
En caso contrario:
cols = ct. columnas de precios diarios
df = pd.(js['record'], columns=cols)
si ktype en ct:
df = df . aplicar map(lambda x: x . replace(u ', ', u ' '))
Para en la columna Columna[1: ]:
df[col]=df[col]. astype(float)
Si el inicio no es Ninguno:
df = df[df . gt;=start]
Si el final no es Ninguno:
df = df[df .date lt;=end]
df = df.set_index( 'fecha')
Devuelve df
def code_to_APIcode (código):
"""
Función:
Verifique si el código de stock ingresado es correcto. Si es correcto, devuelva el código de stock utilizado por la API.
"""
Imprimir (código)
El código if en ct. INDEX_KEY:
Devolver ct.
INDEX _ LIST [código]
En caso contrario:
if len(código)! = 6:
Elevar IOError('¡Error de entrada de código!')
De lo contrario:
Si el código[:1] está en ['5',' 6 '] else 'szs'code, luego devuelve 'shs'code
def get_url(ktype, code):
"""
Función:
Verifique si el tipo de línea k de entrada es correcto. Si es correcto, devuelva la URL.
"""
Si el tipo k en ct. K_TYPE_KEY:
url = ct. URL del precio diario. PAGE_TYPE['http'],ct. PAGE_DOMAIN['ifeng'],
ct. K_TYPE[ktype], código)
URL de retorno
elif ktype en el tipo de contacto. K_TYPE_MIN_KEY:
url = ct. URL de precio más bajo. PAGE_TYPE['http'],ct. PAGE_DOMAIN['ifeng'],
código,ktype)
url de retorno
de lo contrario:
raise IOError('ktype error de entrada ! ')
Definir ping_API(url):
"""
Función:
Enviar solicitud de datos a la API, si el enlace Si es normal, devuelva datos
"""
text = ' '
Pruebe:
req = request (url)
texto = urlopen(req, tiempo de espera=10). read()
if len(text) lt;15:
raise IOError('¡Sin datos!')
La excepción es e:
Imprimir(e)
De lo contrario:
Devolver texto
#Test Portal
imprimir(obtener _ hist _ datos ( ' 601989 ', ' 2015-07-11 ', ' 2015-07-22 '))