我希望我的Java应用程序从http://www.nasdaqomxbaltic.com/或任何其他提供数据文件的站点下载CSV文件。
如何在下载csv文件之前告诉我的java应用程序更改值和更改值?
以下是选择日期范围的表格:http://www.nasdaqomxbaltic.com/market/?pg=charts&idx_main[]=OMXBBGI。目前网站分配了默认值和来自的值,我得到的CSV文件包括默认日期和迄今为止的数据。
您是否可以建议任何可以更改和更改值的Java库,以便下载仅包含特定日期范围的csv文件?
答案 0 :(得分:1)
首先,您可以使用以下网址按日期搜索:
http://www.nasdaqomxbaltic.com/market/?pg=charts&lang=en&idx_main%5B%5D=OMXBBGI&add_index=OMXBBPI&add_equity=LT0000128266&period=6months&start_d=19&start_m=7&start_y=2011&end_d=19&end_m=1&end_y=2012
您可以在这些参数中提供所需的日期值:
ex :start_d=19&start_m=7&start_y=2011&end_d=19&end_m=1&end_y=2012
然后想法是获取渲染的网页。在这里,您可以像这样使用Jsoup library:
Document doc = Jsoup.connect("http://www.nasdaqomxbaltic.com/market/?pg=charts&lang=en&idx_main%5B%5D=OMXBBGI&add_index=OMXBBPI&add_equity=LT0000128266&period=6months&start_d=19&start_m=7&start_y=2011&end_d=19&end_m=1&end_y=2012").get();
Elements csvLinkFiles= doc.select("div.download > a");
int filesCounter = 0;
for (Element link : csvLinkFiles) {
String href = link.attr("href");
URL csvFileLink= new URL(href);
ReadableByteChannel rbc = Channels.newChannel(csvFileLink.openStream());
FileOutputStream fos = new FileOutputStream("csv-file-"+ (++filesCounter) + ".csv");
fos.getChannel().transferFrom(rbc, 0, 1 << 24);
}
我不确定代码,但想法就在这里。
编辑:
执行一点请求后,您似乎必须执行HTTP Get(因为该文件不是静态的,并且会根据请求返回)。
以下是一小段代码,应该替换URL csvFileLink= new URL(href)
行下面的所有代码:
GetMethod get = new GetMethod(href);
InputStream in = get.getResponseBodyAsStream();
File file=new File("csv-file-"+ (++filesCounter) + ".csv");
OutputStream out = new FileOutputStream(file);
int read = 0;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
in.close();
out.flush();
out.close();