Ранее мне удалось получить данные с веб-сайта Niftyindices.com NSE India. это исторические индексные данные, которые мне нужны. Веб-сайт www.niftyindices.com, исторические данные можно найти в разделе «Отчеты» на домашней странице в разделе «Исторические данные». На этой странице вам необходимо выбрать тип индекса «Акционный капитал» и индекс «NIFTY 100». Диапазон данных может быть - я обычно выбираю период с 01 января 2001 г. по сегодняшний день. до вчерашнего дня мне удавалось получить данные с этого сайта. но внезапно с сегодняшнего утра данные с использованием того же кода не появляются. Ниже приведен код, который я использую для очистки. bm_sv — это важный файл cookie, который необходимо передать на сайт — это из моего предыдущего опыта. Полученный Json больше не содержит никаких данных.
Спасибо за любую помощь заранее
import requests
import json
from datetime import datetime
print('start')
data=[]
headers = {'Content-Type': 'application/json; charset=utf-8'
,'Accept':'application/json, text/javascript, */*; q=0.01'
,'Accept-Encoding':'gzip, deflate'
,'Accept-Language':'en-US,en;q=0.9'
,'Content-Length':'100'
,'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'
,'Cookie':'bm_sv=9B706239B47F50CA0B651E20BA5CBF74~YAAQFjkgF2zWSiyOAQAAdV0dQRfVSICkZc20SfI+PnDk8taK1Ppu1ZSmjclFkHqVgsGOE0vK3WnPMHuhY5kOStjVm4OnN1wm9SBRO3nIAvXWAVCR8iN23B8R7kHpcme82M8ytCrJ/LozntCxQlQSFqzuFwLw4+ZPBjdkICfQH4piCmjvZB3AH8NvCmf+nbzT34Q4JO4zYeYadkjlKjVRVIh0lzX2BK8crljTE9W+F1DUdtZYBRBUCM83OIfmZhnH6PnDu79C~1'
}
row=['indexname','date','open','high','low','close']
data.append(row)
payload = {'name': 'NIFTY 100','startDate':'01-Jan-2001','endDate': '10-Mar-2024'}
JSonURL='https://www.niftyindices.com/Backpage.aspx/getHistoricaldatatabletoString'
r=requests.post(JSonURL, data=json.dumps(payload),headers=headers)
print(r.text)
text=r.json()
print(text)
datab=json.loads(text['d'])
sorted_data=sorted(datab,key=lambda x: datetime.strptime(x['HistoricalDate'], '%d %b %Y'), reverse=False)
print('startdata available from: ',datetime.strftime(datetime.strptime(sorted_data[0]['HistoricalDate'], '%d %b %Y'),'%d-%b-%Y'))
print('data available till',datetime.strftime(datetime.strptime(sorted_data[len(datab)-1]['HistoricalDate'], '%d %b %Y'),'%d-%b-%Y\n'))
for rec in sorted_data:
row=[]
row.append(rec['Index Name'])
row.append(datetime.strptime(rec['HistoricalDate'], '%d %b %Y'))
row.append(rec['OPEN'].replace('-','0'))
row.append(rec['HIGH'].replace('-','0'))
row.append(rec['LOW'].replace('-','0'))
row.append(rec['CLOSE'])
print(row)
data.append(row)
print(data)






Используемые вами полезные данные должны быть вложенным словарем. Пожалуйста, проверьте следующий (измененный) код. Это работает сейчас!
mypayload = {"cinfo":json.dumps(payload)}
r=requests.post(JSonURL, data=json.dumps(mypayload),headers=headers)
import requests
import json
from datetime import datetime
print('start')
data=[]
headers = {'Content-Type': 'application/json; charset=utf-8'
,'Accept':'application/json, text/javascript, */*; q=0.01'
,'Accept-Encoding':'gzip, deflate'
,'Accept-Language':'en-US,en;q=0.9'
,'Content-Length':'100'
,'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'
,'Cookie':'bm_sv=9B706239B47F50CA0B651E20BA5CBF74~YAAQFjkgF2zWSiyOAQAAdV0dQRfVSICkZc20SfI+PnDk8taK1Ppu1ZSmjclFkHqVgsGOE0vK3WnPMHuhY5kOStjVm4OnN1wm9SBRO3nIAvXWAVCR8iN23B8R7kHpcme82M8ytCrJ/LozntCxQlQSFqzuFwLw4+ZPBjdkICfQH4piCmjvZB3AH8NvCmf+nbzT34Q4JO4zYeYadkjlKjVRVIh0lzX2BK8crljTE9W+F1DUdtZYBRBUCM83OIfmZhnH6PnDu79C~1'
}
row=['indexname','date','open','high','low','close']
data.append(row)
payload = {'name': 'NIFTY 100','startDate':'01-Jan-2001','endDate': '10-Mar-2024'}
mypayload = {"cinfo":json.dumps(payload)}
JSonURL='https://www.niftyindices.com/Backpage.aspx/getHistoricaldatatabletoString'
r=requests.post(JSonURL, data=json.dumps(mypayload),headers=headers)
print(r.text)
text=r.json()
print(text)
datab=json.loads(text['d'])
sorted_data=sorted(datab,key=lambda x: datetime.strptime(x['HistoricalDate'], '%d %b %Y'), reverse=False)
print('startdata available from: ',datetime.strftime(datetime.strptime(sorted_data[0]['HistoricalDate'], '%d %b %Y'),'%d-%b-%Y'))
print('data available till',datetime.strftime(datetime.strptime(sorted_data[len(datab)-1]['HistoricalDate'], '%d %b %Y'),'%d-%b-%Y\n'))
for rec in sorted_data:
row=[]
row.append(rec['Index Name'])
row.append(datetime.strptime(rec['HistoricalDate'], '%d %b %Y'))
row.append(rec['OPEN'].replace('-','0'))
row.append(rec['HIGH'].replace('-','0'))
row.append(rec['LOW'].replace('-','0'))
row.append(rec['CLOSE'])
print(row)
data.append(row)
print(data)
я назначил следующим образом: payload = { "cinfo": f"{{'name':'{Indexname}','startDate':'{st_dt}','endDate':'{end_dt}'}}" } Это сработало. Спасибо, что указали на это