首页 > 解决方案 > jsp 数据到 excel/CSV

问题描述

请参阅下面的链接 - https://nseindia.com/ChartApp/install/charts/mainpage.jsp

这个链接基本上绘制了漂亮的索引数据......

当您将鼠标悬停在任何这些蜡烛上时,它会显示该特定时间的开盘价、最高价、最低价、收盘价、时间和交易量。我假设这些数据是在计算机的某个地方下载的。

我希望这些数据始终保存在一个 CSV/XLS 文件中……这可能吗?

我是编码方面的菜鸟,因此需要您的帮助。

尝试谷歌寻求帮助,但没有运气

标签: jspflash

解决方案


“当您将鼠标悬停在任何这些蜡烛上时,它会显示该特定时间的开盘价、最高价、最低价、收盘价、时间和交易量。我假设这些数据是在计算机的某个位置下载的。”

“我希望这些数据一直保存在一个 CSV/XLS 文件中……有可能吗?

某些外部请求可能会访问相同的数据。但这需要一些努力...

1) 图表是通过对来自GetHistoricalNew.jsp的数据的 POST 请求生成的。

2) 请求中预计包含lParamsso findvar lParams = "";在页面源代码中。

从源代码中可以看到:
view-source:https://nseindia.com/ChartApp/install/charts/mainpage.jsp

它通过一些函数使用这些参数建立一个请求:

var lParams = getCurrentParams();

所需的getCurrentParams()功能存在于:selector.jsp

不知何故,它使用以下参数向GetHistoricalNew.jsp发出请求:
InstrumentSegment和... 等CDExpiryMonthCDDate1

示例请求可能如下所示:

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=可能的值是 :FUTSTKFUTIDXFUTIVX

另一个例子:在 function 中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;

}

推荐阅读