Rumah > Soal Jawab > teks badan
有图片的地址,如:http://i2.pixiv.net/img-original/img/201...
还有登陆后获取的cooikes:Connection cookies(Map<String, String> 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来从网站下载图片
ringa_lee2017-04-17 17:43:15
Masalah telah diselesaikan Gunakan Firebug untuk menangkap paket permintaan yang dihantar semasa menyemak imbas gambar dalam penyemak imbas dan kemudian gunakan binaan URLConnection untuk menghantar paket permintaan dengan kuki mengikut formatnya. Kelajuan muat turun terlalu perlahan untuk imej yang lebih besar daripada 1M.
/**
* 下载图片从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());
}
ringa_lee2017-04-17 17:43:15
Tidak kira apa yang anda gunakan untuk menghuraikan HTML, satu-satunya perkara yang menentukan log masuk anda ialah kuki dalam permintaan http, jadi anda boleh membuat permintaan log masuk dahulu, dapatkan kuki daripada http res, dan kemudian tetapkan kuki kepada permintaan http seterusnya Ini melengkapkan operasi penyemak imbas untuk mengekalkan kuki, dan data sumber yang memerlukan log masuk boleh dimuat turun
PHP中文网2017-04-17 17:43:15
Selepas mengekstrak img src, jika anda menggunakan URLConnection untuk memuat turun gambar, adakah anda mempunyai kebenaran untuk menyemak sama ada terdapat sesuatu seperti session_id dalam laman web, secara ringkasnya, ketahui ID log masuk pengguna dan letakkan beberapa ID dalam img src