0

我需要能够使用 Java 从网页下载文件。问题是我似乎无法找到该文件的确切 URL。示例:www.something.com/file.xls。

我需要的文件可以在这个 url 上找到:http ://www.nasdaqomxnordic.com/aktier/Historiska_kurser/?Instrument= SSE837#divId 如果向下滚动一点,您可以看到 Excel 徽标。

如果有人有一个图书馆可以帮助我解决这个问题,当然还有我的问题中的任何其他类型的指导,我会很高兴:)

4

1 回答 1

0

您的问题没有通用的解决方案——JavaScript 可用于混淆什么是链接,什么不是链接以及链接的去向。但是,如果您对抓取特定页面感兴趣,则可以对其进行逆向工程。

例如,在您链接的页面上,Excel 徽标具有 ID exportExcel。搜索#exportExcel最终会导致这个代码片段:

if(to.match(/^\d{4}[-]\d{2}[-]\d{2}$/) && from.match(/^\d{4}[-]\d{2}[-]\d{2}$/)) {
    var query = webCore.createQuery( webCore.marketAction.getDataSeries, {}, {
            FromDate: from,
            ToDate: to,
            Instrument: webCore.getInstrument(),
            hi__a : "0,1,2,4,21,8,10,11,12,9",
            OmitNoTrade: "true",
            ext_xslt_lang: currentLanguage,
            ext_xslt_options: "," + $("#adjustedId:checked").val() + ",", //$("#unadjustedId:checked").val() + ",",
            ext_xslt: "hi_table_shares_adjusted.xsl",
            ext_contenttype : "application/ms-excel",
            ext_contenttypefilename : "_" + webCore.getInstrument() + ".xls",
            ext_xslt_hiddenattrs: ",ip,iv,",
            ext_xslt_tableId: "historicalTable"
        }
    );
    $("#excelQuery").val( query );
    $("#excelForm").attr( "action", webCore.proxyURL ).submit();
}

那是建立一个带有某种隐藏表单提交的 URL。通过对源代码进行试验和跟踪,您应该能够在 Java 代码中复制它正在执行的操作以生成所需的 URL。您需要熟悉 JavaScript 和 JQuery。

另一种方法是在查看网络流量(例如通过Wireshark)的同时单击下载链接,并观察浏览器请求的构造 URL。您将需要一些 HTTP 知识。

于 2012-08-31T23:34:31.073 回答