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