前提
最近我的的朋友瀏覽一些網站,看到好看的圖片,問我有沒有辦法不用手動一張一張保存圖片!
我說用Jsoup丫!
打開開發者模式(F12),找到對應圖片的鏈接,在互聯網中,每一張圖片就是一個鏈接!
一、新建Maven項目,導入Jsoup環境依賴
org.jsoup
jsoup
1.11.2
二、代碼編寫
public class JsoupTest {
public static void main(String[] args) throws IOException {
// 爬蟲的網站
String url="https://mp.weixin.qq.com/s/caU6d6ebpsLVJaf-7gMjtg";
// 獲得網頁的document對象
Document document = Jsoup.parse(new URL(url), 10000);
// 爬取含圖片的代碼部分
Element content = document.getElementById("js_content");
// 獲取img標簽代碼 這是個集合
Elements imgs = content.getElementsByTag("img");
// 命名圖片的id
int id=0;
for (Element img : imgs) {
// 獲取具體的圖片
String pic = img.attr("data-src");
URL target = new URL(pic);
// 獲取連接對象
URLConnection urlConnection = target.openConnection();
// 獲取輸入流,用來讀取圖片信息
InputStream inputStream = urlConnection.getInputStream();
// 獲取輸出流 輸出地址+文件名
id++;
FileOutputStream fileOutputStream = new FileOutputStream("E://JsoupPic//" + id + ".png");
int len=0;
// 設置一個緩存區
byte[] buffer = new byte[1024 * 1024];
// 寫出圖片到E:/JsoupPic中, 輸入流讀數據到緩沖區中,并賦給len
while ((len=inputStream.read(buffer))>0){
// 參數一:圖片數據 參數二:起始長度 參數三:終止長度
fileOutputStream.write(buffer, 0, len);
}
System.out.println(id+".png下載完畢");
// 關閉輸入輸出流 最后創建先關閉
fileOutputStream.close();
inputStream.close();
}
}
}
成果:
心得:
1、網絡上的每一張圖片都是一個鏈接
2、我們知道整個網頁就是一個文檔樹,先找到包含圖片的父id,再通過getElementsByTag()獲取到圖片的標簽,通過F12,我們知道圖片的鏈接是存在img標簽里面的 data-src屬性中
3、通過標簽的data-src屬性,就獲取到具體圖片的鏈接
4、通過輸入輸出流,把圖片保存在本地中!