摘要:今天我就用爬取了一個斗圖網站上的所有表情包,用來充實自己的表情包庫。下載完所有圖片,總共有思路主要通過解析頁面的源代碼來獲取圖片的地址,然后通過圖片地址下載圖片到本地,所以要學會使用瀏覽器進行分析。
跟朋友聊天總會用到大量表情包,有些人甚至專門收集各種各樣的表情包,看看誰能打敗誰。今天我就用java爬取了一個斗圖網站上的所有表情包,用來充實自己的表情包庫。代碼邏輯有可能并不完美,哈哈,也花了我幾個小時才完成呢。
下載完所有圖片,總共有225M.思路:主要通過解析頁面的源代碼來獲取圖片的URL地址,然后通過圖片地址下載圖片到本地,所以要學會使用瀏覽器進行分析。
所用jar包:jsoup-1.8.1.jar
網站首頁:https://doutushe.com/portal/index/index/p/1
瀏覽器:Chrome
1,獲取網頁源代碼/** * 獲取網頁源代碼 * @author Augustu * @param url 網頁地址 * @param encoding 網頁編碼 * @return 網頁源代碼 */ public static String getUrlResource(String url,String encoding) { //網頁源代碼,用String這個容器記錄 String htmlResource = ""; //記錄讀取網頁的每一行數據 String temp = null; try { //1,找到網站地址 URL theUrl = new URL(url); //2,建立起與網站的連接 URLConnection urlConnection = theUrl.openConnection(); //3,創建輸入流,此處讀取的是網頁的源代碼 InputStreamReader isr = new InputStreamReader(urlConnection.getInputStream(),encoding); //4,對輸入流進行緩沖,加快讀取速度 BufferedReader reader = new BufferedReader(isr); //5,一行一行讀取源代碼,存到htmlResource中 while((temp = reader.readLine()) != null) { htmlResource += temp; } } catch (IOException e) { e.printStackTrace(); } return htmlResource; }2,獲取頁面所有組圖片的UrL地址
/** * 獲取頁面所有組圖片的UrL地址 * @author Augustu * @param context 每個頁面的urL * @return 獲取頁面所有組圖片的UrL地址 */ public static String findPictureUrl(String context) { String temp = "";//暫時存儲得到的每個url String pictureUrl = "";//得到所有URL //1,Jsoup將讀取的網頁源代碼解析為Html文檔,便可以使用Jsoup的方法操作html元素了,就像javascript一樣 Document document = Jsoup.parse(context); //2,觀察網頁源代碼,發現每組圖片都連接到了另一個URL地址,這個a標簽的class為“link-2” Elements groupUrl = document.getElementsByClass("link-2"); //3,遍歷每個a標簽,得到href for(Element ele: groupUrl) { //此處我發現每次Url都輸出兩次,也沒找到原因,就用此方法先解決他 if(ele.attr("href") == temp) { continue; } temp = ele.attr("href"); //4,將所有URL存入String中,并使用空格分開,便于后面分割 //本來我使用“|”分隔開來,分割的結果竟然是每個字符都分開了 pictureUrl += "https://doutushe.com"+ele.attr("href")+" "; } return pictureUrl; }3,下載單張圖片
/** * 下載單張圖片 * @param picturl 圖片地址 * @param filePath 下載路徑 * @param fileName 下載名 */ public static void downPicture(String picturl,String filePath,String fileName) { FileOutputStream fos = null;//輸出文件流 BufferedOutputStream bos = null;//緩沖輸出 File file = null;//創建文件對象 File dir = new File(filePath);//創建文件保存目錄 Connection.Response response; try { //1,Jsoup連接地址,得到響應流,ignoreContentType表示忽略網頁類型,如果不加會報錯(默認只支持文本),因為我們頁面是圖片 response = Jsoup.connect(picturl).ignoreContentType(true).execute(); //2,將頁面內容按字節輸出 byte[] img = response.bodyAsBytes(); //3,寫入本地文件中 //判斷文件目錄是否存在, if(!dir.exists() ){ dir.mkdir();//創建文件夾 } file = new File(filePath+""+fileName);//創建文件 fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos); bos.write(img);//寫入本地 } catch (IOException e) { e.printStackTrace(); }finally{ //4,釋放資源 if(bos!=null){ try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } if(fos!=null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }4,下載所有圖片
/** * 下載所有圖片 * @author Augustu * @param pictureUrl 每組圖片url */ public static void downallPicture(String pictureUrl,String downLoadPath) { String picturl = ""; String pictureName ="";// String[] pictureUrlArry = pictureUrl.split(" ");//圖片組的url for(int i=0;i5,主函數運行代碼 public static void main(String[] args) { String context = ""; //觀察源代碼,發現共有28個頁面 for(int i=1;i<=28;i++) { //獲取每個頁面 context = getUrlResource("https://doutushe.com/portal/index/index/p/"+i+"","utf-8"); //獲取該頁面所有組圖片的url String pictureUrl = findPictureUrl(context); downallPicture(pictureUrl,"E:image表情包"); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71919.html
摘要:是這樣的有一次想要斗圖配圖就在網上搜索表情包然后發現了一個表情巨多的網站不小心動起了邪念產生了興趣那就把它們存下來吧用請求了一下發現這個網站沒有做反爬發現這里有的頁面簡單的切換一下頁面可以發現第一頁的鏈接是這樣的所以以此類推構建一下所有這樣 是這樣的 有一次想要斗圖 配圖 就在網上搜索表情包 然后發現了一個表情巨多的網站 不小心動起了邪念 產生了興趣 showImg(https:/...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:因此,本文將會以一些正經的嚴謹的有深度的大概吧的課題,慢慢的接觸人工智能的相關知識。 Before The Beginning ????近年,技術圈炒的最火的兩個話(ba)題(gua)不外乎就是人工智障智能以及炒幣區塊鏈了,這個系列文章我主要以一個小菜鳥的角度一步一步的對人工智能的相關知識做一點了解,也算是一個顫顫巍巍追著AI浪潮公交車的社會主義五好青年,咳咳,扯遠了...其實對于人工...
??前面的話?? 大家好!這是Java基礎知識與數據結構博文的導航帖,收藏我!學習Java不迷路! ?博客主頁:未見花聞的博客主頁 ?歡迎關注?點贊?收藏??留言? ?本文由未見花聞原創,CSDN首發! ?首發時間:?2021年11月11日? ??堅持和努力一定能換來詩與遠方! ?參考書籍:?《Java核心技術卷1》,?《Java核心技術卷2》,?《Java編程思想》 ?參考在線編程網站:?牛...
摘要:文章目錄前言爬取分析視頻教學成果展示福利入門到就業學習路線規劃小白快速入門爬蟲路線前言皮皮蝦一個沙雕而又有趣的憨憨少年,和大多數小伙伴們一樣喜歡聽歌游戲,當然除此之外還有寫作的興趣,,日子還很長,讓我們一起加油努力叭話 ...
閱讀 2320·2021-11-08 13:13
閱讀 1250·2021-10-09 09:41
閱讀 1693·2021-09-02 15:40
閱讀 3193·2021-08-17 10:13
閱讀 2551·2019-08-29 16:33
閱讀 3126·2019-08-29 13:17
閱讀 3136·2019-08-29 11:00
閱讀 3301·2019-08-26 13:40