java怎么实现下载指定网页中包含的pdf文件。 求代码?

 我来答
beauty1eg
2011-05-06 · TA获得超过243个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:154万
展开全部
解析指定页面,得到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();
}
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
b8os608gn
2011-05-06 · TA获得超过762个赞
知道小有建树答主
回答量:813
采纳率:0%
帮助的人:522万
展开全部
HTML Parser

开源的,自己查 api 去吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式