成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaSE小實(shí)踐1:Java爬取斗圖網(wǎng)站的所有表情包

yuanxin / 3432人閱讀

摘要:今天我就用爬取了一個(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;i
5,主函數(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

相關(guān)文章

  • 用python爬取 20w 表情之后,感嘆我族人是多么強(qiáng)大!

    摘要:是這樣的有一次想要斗圖配圖就在網(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:/...

    Sike 評(píng)論0 收藏0
  • 首次公開(kāi),整理12年積累博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • 【正經(jīng)AI on Python入門(mén)系列】0.來(lái)學(xué)點(diǎn)Python吧!從一個(gè)斗圖工具開(kāi)始

    摘要:因此,本文將會(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ì)于人工...

    趙連江 評(píng)論0 收藏0
  • JavaSE與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識(shí)系列——專欄導(dǎo)航

    ??前面的話?? 大家好!這是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)站:?牛...

    Cc_2011 評(píng)論0 收藏0
  • 【微信程序爬蟲(chóng)】表情程序圖文視頻教學(xué),從零寫(xiě)起,保姆教程?。。?/b>

    摘要:文章目錄前言爬取分析視頻教學(xué)成果展示福利入門(mén)到就業(yè)學(xué)習(xí)路線規(guī)劃小白快速入門(mén)爬蟲(chóng)路線前言皮皮蝦一個(gè)沙雕而又有趣的憨憨少年,和大多數(shù)小伙伴們一樣喜歡聽(tīng)歌游戲,當(dāng)然除此之外還有寫(xiě)作的興趣,,日子還很長(zhǎng),讓我們一起加油努力叭話 ...

    coordinate35 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<