有图片的地址,如:http://i2.pixiv.net/img-original/img/201...
还有登陆后获取的cooikes:Connection cookies(Map cookies);
登陆和获取cooikes以及解析页面是使用的jsoup。
但是需要登陆后才能获取,使用以下代码:
private void downloadImg(String imgURL) throws MalformedURLException, IOException {
URL url = new URL(imgURL);
URLConnection uc = url.openConnection();
InputStream is = uc.getInputStream();
File file = new File("D:\\pixiv");
FileOutputStream out = new FileOutputStream(file);
int i = 0;
while ((i = is.read()) != -1) {
out.write(i);
}
is.close();
}
只能下载不需要登陆的页面的图片。
要如何使用jsoup带cooikes来从网站下载图片
使用Firebug抓取浏览器中浏览图片时发送的请求包然后再根据其格式,使用URLConnection构造发送带cookies的请求包即可。
/**
* 下载图片从URL
*
* @param img 图片对象
* @param imgFile 代写入文件对象
* @throws MalformedURLException 获取URL异常
* @throws IOException URLConnection获取异常
*/
public void downloadImg(Img img, File imgFile) throws MalformedURLException, IOException {
URL url = new URL(img.getUrl());
URLConnection uc = url.openConnection();
uc.setConnectTimeout(Setting._Download_Img_TimeOut); // 设置下载图片超时时间
uc.setRequestProperty("accept", "image/png,image/*;q=0.8,*/*;q=0.5");
uc.setRequestProperty("accept-encoding", "gzip, deflate");
uc.setRequestProperty("accept-language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
uc.setRequestProperty("connection", "keep-alive");
uc.setRequestProperty("cookie", PixivLogin.userCookies.toString());//这里是cookie部分
uc.setRequestProperty("dnt", "1");
uc.setRequestProperty("host", "i2.pixiv.net");
uc.setRequestProperty("user-agent", Setting._DownLoadImgClient_UserAgent);
uc.setDoInput(true);
uc.setDoOutput(true);
System.out.println("图片获取成功");
System.out.println("开始写入硬盘");
InputStream is = uc.getInputStream();
FileOutputStream out = new FileOutputStream(imgFile);
//BufferedOutputStream bout = new BufferedOutputStream(out);
int i = 0;
while ((i = is.read()) != -1) {
out.write(i);
}
is.close();
System.out.println(img.getName() + "写入完毕 " + imgFile.length());
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。