天天看點

爬了1000張清純妹子私房照,我流鼻血了...

閑扯幾句

大家好,我是你們的老朋友青戈,之前分享了一篇Java爬蟲的入門實戰教程,收獲了不少贊,看來大家夥對爬蟲的熱情度還是蠻高的哈。既然大家都這麼想學爬蟲,那今天就安排點刺激的。那你要非問我有多刺激,那我隻能告訴,我看完…流鼻血了…🤪

插播一條反爬資訊:本文作者:

程式員青戈

,部落格:https://blog.csdn.net/xqnode

我知道大家平時工作生活都挺累的,要是程式員的話就更苦逼了,加不完的班,敲不完的bug,着實讓老哥我有點心疼啊,那麼這期就給大家放一波福利。高能預警!一大批美女即将來襲,請各位朋友們把持住,把持住啊!

爬了1000張清純妹子私房照,我流鼻血了...

啥?看的不過瘾?我就知道你這麼說,同樣作為兄弟的我非常能了解啊,那麼下面這篇教程你得好好看看了,因為這将直接決定你今晚能不能睡個好覺😂

進入主題

今天我們爬取的網站是 唯美女生網 ,我們進來看看

爬了1000張清純妹子私房照,我流鼻血了...

是不是很哇塞?都是好看的小姐姐😎這誰頂得住啊,我就點進去瞅一眼

爬了1000張清純妹子私房照,我流鼻血了...

卧槽?這什麼鬼?小姐姐怎麼變大媽了!

爬了1000張清純妹子私房照,我流鼻血了...

導演:搞錯了,再來!

爬了1000張清純妹子私房照,我流鼻血了...

啊這,為什麼讓小小年紀的我看到這個?兄弟們,我又相信愛情了!曾經有一段真摯的愛情擺在我的面前,我沒有好好珍惜,現在,她回來了,還是那麼清純、羞澀,穿着碎花的裙子,趴在床上向我微笑。

這,不就是青春嗎?

這,不就是愛情嗎?

還等什麼?我來啦!

網頁代碼分析

回歸主題哈,各位,我這個人有個不好的習慣,看到美女就走神,真是抱歉了,差點忘記了今天是來寫代碼的😅

這個網站的站長估計每天被爬蟲的煩死了,伺服器頂着巨大的壓力,曾經一段時間還頻繁當機。為了解決後患,他幹脆關了網頁的

f12

功能,不讓看代碼了,防止無數的se狼們搞他的小站,畢竟人家也不容易,你們幹太猛了,怼太深了,不給人家活路啊

今天我為了寫這篇教程,也是花盡了心思啊,想盡辦法拿到了他的源碼,你們猜我是怎麼搞的?

不知道你們觀察過沒,平時你在看網站源代碼的時候,位址欄的前面會多這一段:

view-source:

,後面跟的就是你實際的網站的位址,比如百度的源碼是這樣的:

view-source:https://www.baidu.com

爬了1000張清純妹子私房照,我流鼻血了...

那麼同樣的道理,我們也可以使用這個位址看這個網站的源代碼,比如:

view-source:https://www.vmgirls.com/15215.html

爬了1000張清純妹子私房照,我流鼻血了...

我們從網頁的源代碼分析可以找到圖檔的位置,分析得出

a

标簽的

href

屬性就是圖檔的位址:

爬了1000張清純妹子私房照,我流鼻血了...

随便點開看一下,證明我的想法:

爬了1000張清純妹子私房照,我流鼻血了...

OK,确定了圖檔的位置,那就好辦了

開始撸碼

還是老規矩,我們繼續使用

Jsoup

來進行網頁資料抓取,先引入

jsoup

的包:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.13.1</version>
</dependency>
           

連接配接目标網頁,得到

Document

對象:

Document

對象中擷取到目标圖檔所在父級的

div

,擷取到這個

div

之後,事情就簡單多了。

我們從這個

div

中擷取所有的

a

标簽,然後判斷,

a

标簽的

href

屬性是否包含

jpeg

關鍵字,如果包含了,那就是我們需要抓取的圖檔。

Elements elements = element.getElementsByTag("a");
        for (Element a : elements) {
            String href = a.attr("href");
            if(href.contains("jpeg")) {
                System.out.println(href);
            }
        }
           

列印下結果,确實是拿到了所有的圖檔。

爬了1000張清純妹子私房照,我流鼻血了...

到了這一步算不算完成了呢?肯定沒有啊,我們還沒有下載下傳到本地磁盤裡面呢。不在自己電腦裡怎麼能在夜深人靜的時候自己偷偷看啊😆

那我們就得想辦法把這些連結下載下傳下來啊,Java下載下傳網絡檔案非常簡單,我這裡為了省事呢,直接使用了第三方的工具類

hutool

,感興趣的同學們可以自己去了解一下

hutool

這個甜甜的工具類啊,保證你用完一次就愛上他。官網位址:https://www.hutool.cn/

引入hutool

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.3.7</version>
</dependency>
           

下載下傳圖檔到本地磁盤:

for (Element a : elements) {
            String href = a.attr("href");
            if(href.contains("jpeg")) {
        System.out.println(href);
        // 下載下傳圖檔到項目根路徑下的imgs檔案夾中
        HttpUtil.downloadFile("https:" + href, new File(System.getProperty("user.dir") + "/imgs"));
    }
}
           

再跑一遍:

爬了1000張清純妹子私房照,我流鼻血了...

控制台顯示下載下傳完成,我們打開本地磁盤的檔案夾看看:

爬了1000張清純妹子私房照,我流鼻血了...
爬了1000張清純妹子私房照,我流鼻血了...

非常完美啊,看到這一排排的美女圖檔,内心還是有那麼一絲絲的小躁動的 [害羞]

批量下載下傳

剛才示範的是下載下傳單個網頁中的圖檔,那麼很多壞家夥又會很好奇,怎麼批量下載下傳美女圖檔?

别以為我不知道你們的小心思哈,因為我也在琢磨呢,哈哈🤣

你别說,我還真找到辦法了。

經過沒日沒夜的研究,我發現,不同網頁的位址,是通過數字控制的,比如:https://www.vmgirls.com/14636.html 和 https://www.vmgirls.com/15298.html

那麼就是說我們找到了這個數字,問題就迎刃而解了。

那麼去哪找這個數字呢?答案肯定是在首頁啊,打開首頁的源代碼看看:

爬了1000張清純妹子私房照,我流鼻血了...

我注意到這個

class=media-content

a

标簽中包含了我們所需要的資料,是以我們來循環一次看看,是不是能拿到:

Document main = Jsoup.connect("https://www.vmgirls.com").get();
Elements medias = main.getElementsByClass("media-content");
for (Element media : medias) {
    System.out.println(media.attr("href"));
}
           

跑了一下代碼,确實拿到了這個數字的位址,但是資料還是有點混亂。

爬了1000張清純妹子私房照,我流鼻血了...

我們需要做進一步的篩選,篩選出末尾是

html

結尾的位址。

Document main = Jsoup.connect("https://www.vmgirls.com").get();
Elements medias = main.getElementsByClass("media-content");
for (Element media : medias) {
    String href = media.attr("href");
    if (href.endsWith("html")) {
        System.out.println(href);
    }
}
           

再跑一次,這就完美了:

爬了1000張清純妹子私房照,我流鼻血了...

接下來就好辦了,有了網頁的位址,我們隻需要挨個循環,就能批量得到網頁的資料了!

完整代碼:

Document main = Jsoup.connect("https://www.vmgirls.com").get();
Elements medias = main.getElementsByClass("media-content");
for (Element media : medias) {
    String url = media.attr("href");
    if (url.endsWith("html")) {
        Document document = Jsoup.connect("https://www.vmgirls.com/" + url).get();
        Element element = document.getElementsByClass("nc-light-gallery").get(0);
        Elements elements = element.getElementsByTag("a");
        for (Element a : elements) {
            String href = a.attr("href");
            if (href.contains("jpeg")) {
                System.out.println(href);
                HttpUtil.downloadFile("https:" + href, new File(System.getProperty("user.dir") + "/imgs"));
            }
        }
    }
}
System.out.println("下載下傳完成");
           
爬了1000張清純妹子私房照,我流鼻血了...

怎麼樣?看到這琳琅滿目的妹子,都是青春期的誘惑啊!心動沒?沒事,代碼拿去,自己跑跑,晚上在被窩裡偷偷看也沒人知道的🤭

至少,我不會說出去~

我是

程式員青戈

,沒錯,逗比青年就是我了,還不趕緊來關注這個騷味十足的年輕人😋
我的原創公衆号:

Java學習指南

最近正在籌備一批Java幹貨教程,現在

關注

還趕得上趟哦🤩

感謝你的閱讀,看完别忘記

三連

哦🍭我們下期見~