"Когда вы наводите курсор мыши на любую из этих свечей, она отображает время открытия, максимума, минимума, закрытия, время и объем в это конкретное время. Я предполагаю, что эти данные загружаются где-то на компьютере . "
"Мне нужны эти данные за все время в одном файле CSV / XLS .... Возможно ли это? "
Возможно, какой-то посторонний запрос может получить доступ к тем же данным. Но это потребует тяжелой работы ...
1) Диаграмма генерируется запросом POST для данных от: GetHistoricalNew.jsp .
2) Ожидается, что запрос будет включать lParams
, поэтому ищите var lParams = "";
в исходном коде страницы.
Как видно из исходного кода:
view-source:https://nseindia.com/ChartApp/install/charts/mainpage.jsp
Он создает запрос с этими параметрами с помощью некоторой функции:
var lParams = getCurrentParams();
И требуемая функция getCurrentParams()
существует в: selector.jsp .
Каким-то образом он делает запрос к GetHistoricalNew.jsp с такими параметрами, как:
Instrument
, Segment
, CDExpiryMonth
и CDDate1
... и т. Д.
Пример запроса может выглядеть следующим образом:
https://nseindia.com/ChartApp/install/charts/data/GetHistoricalNew.jsp?Instrument=XXX&Segment=XXX&Series=XXX&CDExpiryMonth=XXX...etc...etc...
Заменить XXX
фактическими значениями параметров. Все, что вы можете сделать, это прочитать, а затем снова прочитать исходный код, чтобы понять, как определяются эти значения параметров. Затем попытайтесь сделать запрос структурированным, как мой пример запроса, показанного выше.
Например:
<option value="FUTSTK">FUTSTK</option>
<option value="FUTIDX">FUTIDX</option>
<option value="FUTIVX">FUTIVX</option>
Сообщит вам, что &Instrument=
имеет возможные значения: FUTSTK
, или FUTIDX
, или FUTIVX
.
Другой пример: в функции changeFilter
, такие вещи, как ...
if(pValue==SEGMENT_CM)...etc code to read...
Сообщит вам, что &Segment=
имеет возможные значения:
&Segment=SEGMENT_CM
&Segment=SEGMENT_FO
&Segment=SEGMENT_CD
&Segment=SEGMENT_INDEX
В последней строке внизу return lParams;
будет указан тип параметров, которые вам нужны в вашем собственном запросе (чтобы получить ту же информацию, которую получает приложение веб-сайта).
function getCurrentParams()
{
lFrm=document.form1;
var lParams="";
var instru = lFrm.Instrument.value;
lParams+="Instrument="+lFrm.Instrument.value;
//added by swapnil for FUTIVX instruement type on 20 Jun 2014
if(lFrm.Segment.value==SEGMENT_INDEX || (lFrm.Segment.value == SEGMENT_FO && (lFrm.Instrument.value == "FUTIVX" || lFrm.Instrument.value == "FUTIDX")))
{ lParams+="&CDSymbol="+escape(lFrm.CDSymbol_Index.value); }
else
{ lParams+="&CDSymbol="+escape(lFrm.CDSymbol.value); }
lParams+="&Segment="+lFrm.Segment.value;
lParams+="&Series="+lFrm.Series.value;
lParams+="&CDExpiryMonth="+lFrm.CDExpiryMonth.value;
//Added by swapnil for FUTIVX instruement type on 23 Jun 2014
if(lFrm.Instrument.value == "FUTIVX")
{ lParams+="&VIXExpiryMonth="+lFrm.VIXExpiryMonth.value; }
else
{ lParams+="&FOExpiryMonth="+lFrm.FOExpiryMonth.value; }
lParams+="&IRFExpiryMonth="+lFrm.IRFExpiryMonth.value;
lParams+="&CDIntraExpiryMonth="+lFrm.CDIntraExpiryMonth.value;
if(lFrm.Instrument.value == "FUTIVX")
{
//Added by swapnil for FUTIVX instruement type on 20 Jun 2014
lParams+="&VIXIntraExpiryMonth="+lFrm.VIXIntraExpiryMonth.value;
}
else
{ lParams+="&FOIntraExpiryMonth="+lFrm.FOIntraExpiryMonth.value; }
lParams+="&IRFIntraExpiryMonth="+lFrm.IRFIntraExpiryMonth.value;
lParams+="&CDDate1="+lFrm.date_FromDate.value;
lParams+="&CDDate2="+lFrm.date_ToDate.value;
lParams+="&PeriodType="+lFrm.PeriodType.value;
lParams+="&Periodicity="+lFrm.Periodicity.value;
setCurrentParamHash(lParams);
return lParams;
}