尝试下载网站上的所有pdf文件,但代码不正确。我想那里有一个更好的。无论如何它是这样的:
try {
System.out.println("Download started");
URL getURL = new URL("http://cs.lth.se/eda095/foerelaesningar/?no_cache=1");
URL pdf;
URLConnection urlC = getURL.openConnection();
InputStream is = urlC.getInputStream();
BufferedReader buffRead = new BufferedReader(new InputStreamReader(is));
FileOutputStream fos = null;
byte[] b = new byte[1024];
String line;
double i = 1;
int t = 1;
int length;
while((line = buffRead.readLine()) != null) {
while((length = is.read(b)) > -1) {
if(line.contains(".pdf")) {
pdf = new URL("http://fileadmin.cs.lth.se/cs/Education/EDA095/2015/lectures/"
+ "f" + i + "-" + t + "x" + t);
fos = new FileOutputStream(new File("fil" + i + "-" + t + "x" + t + ".pdf"));
fos.write(b, 0, line.length());
i += 0.5;
t += 1;
if(t > 2) {
t = 1;
}
}
}
}
is.close();
System.out.println("Download finished");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我得到的文件是损坏,但有没有更好的方法来下载PDF文件?因为在网站上的一些文件是f1-1x1,f1-2x2,f2-1x1 ..但是如果文件是donalds.pdf stack.pdf等..
所以问题是,如何让我的代码更好地下载所有的pdf文件?
答案 0 :(得分:2)
基本上你要问:"我如何可靠地解析HTML;识别所有指向PDF文件的下载链接"。
其他任何东西(就像你现在拥有的东西;预测链接将如何/可能/应该是什么样子)将成为悲伤的源泉;因为您的网站有任何更新;或尝试在另一个不同的网站上运行您的代码很可能会失败。这是因为HTML很复杂,而且有很多种口味,你应该忘掉" easy"分析HTML内容的解决方案。
从这个意义上讲:学习如何使用HTML解析器;第一个起点可能是Which HTML Parser is the best?