Niftyindices.com не может очистить данные индекса

Ранее мне удалось получить данные с веб-сайта 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)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
120
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используемые вами полезные данные должны быть вложенным словарем. Пожалуйста, проверьте следующий (измененный) код. Это работает сейчас!

Добавлена ​​1 строка

mypayload = {"cinfo":json.dumps(payload)}

1 модифицированная строка (с использованием вновь созданной полезной нагрузки, как показано выше)

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':'{e‌​nd_dt}'}}" } Это сработало. Спасибо, что указали на это

Kiran Jain 31.03.2024 16:28

Другие вопросы по теме