Estou tentando automatizar o download de dados de estoque históricos usando python. A URL que estou tentando abrir responde com um arquivo CSV, mas não consigo abrir usando urllib2. Eu tentei mudar o agente do usuário conforme especificado em algumas perguntas anteriores, até tentei aceitar cookies de resposta, sem sorte. Você pode por favor ajudar.
Observação: o mesmo método funciona para o 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)
Erro
Arquivo "C: \ Python27 \ lib \ urllib2.py", linha 527, em http_error_default, aumentar HTTPError (req.get_full_url (), código, msg, hdrs, fp) urllib2.HTTPError: Erro HTTP 403: Proibido
obrigado pela ajuda
Respostas:
Ao adicionar mais alguns cabeçalhos, consegui obter os dados:
Na verdade, ele funciona apenas com este cabeçalho adicional:
fonte
Isso funcionará em Python 3
fonte
O site da NSE mudou e os scripts mais antigos são semi-ideais para o site atual. Este snippet pode reunir detalhes diários de segurança. Os detalhes incluem símbolo, tipo de título, fechamento anterior, preço de abertura, preço alto, preço baixo, preço médio, quantidade negociada, volume de negócios, número de negociações, quantidades entregues e proporção de entregues vs negociados em porcentagem. Estes convenientemente apresentados como uma lista de forma de dicionário.
Versão Python 3.X com solicitações e BeautifulSoup
Além disso, isso é relativamente modular e está pronto para usar o snippet.
fonte