java怎么实现下载指定网页中包含的pdf文件。 求代码?
展开全部
解析指定页面,得到pdf文件的地址,用URL来取回pdf的输入流,然后写到本地文件。
追问
给个示例,刚学。谢谢
追答
由于回答长度有限制,把导入的包都删掉了。自己导入
public class DownloadPdf {
public static void main(String[] args) {
new DownloadPdf().analyse("http://www1.ap.dell.com/content/topics/topic.aspx/ap/topics/services/zhcn/services_agreement?c=cn&cs=cndhs1&l=zh&s=dhs&~ck=anavml");
}
private void analyse(String site) {
// 正则表达式,解析网页中]*href=[\\'|\\\"]([^\\]*\\.pdf)[\\'|\\\"][^\\]*[\\>|\\/\\>]";
Pattern p = Pattern.compile(regex);
List pdfList = new ArrayList();
try {
URL url = new URL(site);
InputStream is = url.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = br.readLine()) != null) {
Matcher m = p.matcher(line);
while(m.find()){
// System.out.println(m.group(1));
// 把解析好的pdf的下载地址放到list中
pdfList.add(m.group(1));
}
}
br.close();
is.close();
String dir = "d:/pdf/";
File file = new File(dir);
if (!file.exists()) {
file.mkdirs();
}
// 遍历pdf地址的list,逐个下载
for (String pdf : pdfList) {
URL u = new URL(pdf);
InputStream i = u.openStream();
byte[] b = new byte[1024*1024];
int len;
String fileName = pdf.substring(pdf.lastIndexOf("/"));
OutputStream bos = new FileOutputStream(new File(dir + fileName));
while ((len = i.read(b)) != -1) {
bos.write(b, 0, len);
}
bos.flush();
bos.close();
i.close();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询