0

Java を使用して Web ページからファイルをダウンロードできるようにする必要があります。問題は、ファイルの正確な 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 にある程度精通している必要があります。

もう 1 つの方法は、(たとえばWiresharkを介して) ネットワーク トラフィックを監視しながらダウンロード リンクをクリックし、ブラウザが要求している構築された URL を観察することです。HTTP の知識が必要です。

于 2012-08-31T23:34:31.073 に答える