Estoy tratando de automatizar la descarga de datos históricos de acciones usando Python. La URL que estoy intentando abrir responde con un archivo CSV, pero no puedo abrir con urllib2. Intenté cambiar el agente de usuario como se especificó en algunas preguntas antes, incluso intenté aceptar cookies de respuesta, sin suerte. ¿Puedes ayudarme?
Nota: El mismo método funciona para Yahoo Finance.
Código:
import urllib2,cookielib
site= "http://www.nseindia.com/live_market/dynaContent/live_watch/get_quote/getHistoricalData.jsp?symbol=JPASSOCIAT&fromDate=1-JAN-2012&toDate=1-AUG-2012&datePeriod=unselected&hiddDwnld=true"
hdr = {'User-Agent':'Mozilla/5.0'}
req = urllib2.Request(site,headers=hdr)
page = urllib2.urlopen(req)
Error
Archivo "C: \ Python27 \ lib \ urllib2.py", línea 527, en http_error_default raise HTTPError (req.get_full_url (), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 403: Forbidden
Gracias por tu ayuda
Respuestas:
Al agregar algunos encabezados más, pude obtener los datos:
En realidad, funciona solo con este encabezado adicional:
fuente
Esto funcionará en Python 3
fuente
El sitio web de NSE ha cambiado y los scripts más antiguos son semi-óptimos para el sitio web actual. Este fragmento puede recopilar detalles diarios de seguridad. Los detalles incluyen símbolo, tipo de valor, cierre anterior, precio de apertura, precio alto, precio bajo, precio medio, cantidad negociada, volumen de negocios, número de transacciones, cantidades entregadas y proporción entregada y negociada en porcentaje. Estos se presentan convenientemente como una lista en forma de diccionario.
Versión de Python 3.X con solicitudes y BeautifulSoup
Además, este es un fragmento relativamente modular y listo para usar.
fuente