免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Java 從零開始學(xué)爬蟲(gecco)

廢話:

    第一次學(xué)習(xí)并嘗試分析、爬取一個(gè)網(wǎng)站的數(shù)據(jù),全部是從零開始的經(jīng)驗(yàn),希望對(duì)各位看官有幫助,當(dāng)然,本次爬取的是一個(gè)比較簡(jiǎn)單的網(wǎng)頁,沒有任何反爬蟲措施的網(wǎng)頁。

    網(wǎng)上查了一下Java爬數(shù)據(jù),最原始的方式是用請(qǐng)求網(wǎng)頁的字符串然后用正則解析標(biāo)簽,再查了一下有什么爬蟲、解析網(wǎng)頁的工具,然后就查到了這個(gè)gecco,當(dāng)是也沒多想,就是干吧。

    主要參考了兩個(gè)博客:

    1、入門到精通:https://segmentfault.com/a/1190000010086659

    2、精通到放棄:https://blog.csdn.net/gf771115/article/details/53218022

    最后附上官方地址:http://www.geccocrawler.com/

導(dǎo)入gecco包

maven代碼:

  1. <!--gecco抓包工具-->
  2. <dependency>
  3. <groupId>com.geccocrawler</groupId>
  4. <artifactId>gecco</artifactId>
  5. <version>1.0.8</version>
  6. </dependency>

目標(biāo)網(wǎng)站

因?yàn)槲沂歉愣瞬艜?huì)過來寫博客的,所以就直奔主題,說明我主要要做什么了。

網(wǎng)站是:https://doutushe.com/portal/index/index

(站主要是看到了,請(qǐng)聯(lián)系我刪除,沒看到的話,嘿嘿,我就不厚道的繼續(xù)放著了)

經(jīng)過觀察,分頁之后的格式是:https://doutushe.com/portal/index/index/p/1(沒錯(cuò),這個(gè)1就是對(duì)應(yīng)頁數(shù))

頁面大概是這樣的:

然后每一個(gè)帖子的詳情:https://doutushe.com/portal/article/index/id/XR5(最后的XR5是帖子id)

頁面是這樣的:

我的任務(wù)

我的任務(wù)很簡(jiǎn)單,就是把列表的所有的帖子的標(biāo)題、所有的圖片,這兩個(gè)數(shù)據(jù)爬下來

邏輯

1、訪問第1頁

2、讀取第一頁的帖子列表,然后進(jìn)入每一個(gè)帖子的帖子詳情,將標(biāo)題、圖片列表的數(shù)據(jù)拿出來

3、訪問下一頁,然后遍歷帖子列表拿數(shù)據(jù),一直循環(huán),直到?jīng)]有下一頁

第一步:解析第一頁

廢話:按照我做的時(shí)候,我解析第一頁的時(shí)候,是先解析列表信息,最后才開始研究怎么解析出來哪個(gè)是下一頁,現(xiàn)在是回過來寫的,所以就一步到位了,直接解析第一頁的列表信息和下一頁的連接地址

1、創(chuàng)建一個(gè)類(我這里命名是:DoutuSheIndex)

    

    大概意思是主要gecco爬了這個(gè)https://doutushe.com/portal/index/index/p/格式的網(wǎng)址,就會(huì)交給DuotusheIndex這個(gè)類來解析,后面這個(gè)popelines則是解析出來的結(jié)果傳送到另外一個(gè)類做下一步處理,這個(gè)popelines算是一個(gè)標(biāo)識(shí),之后就會(huì)發(fā)現(xiàn)玄機(jī)。

    我們通過頁面的審查元素,可以看到列表的標(biāo)簽信息(如下圖),我們所要的信息,基本上全部包含在這個(gè)class為link-2的a標(biāo)簽里面:

    所以我分為兩個(gè)List<String>用來分別保存列表的名稱和詳情頁面的鏈接,即a標(biāo)簽的內(nèi)容和a標(biāo)簽的href值,所以得到的解析為下圖:

    這里需要再次提醒的是,@Href注解不能單獨(dú)使用,必須用@HtmlField定位到對(duì)應(yīng)的地方,然后再在上方加上@Href標(biāo)簽才能拿到href的值,否則拿到的就是a標(biāo)簽的值,其他的注解用法,可以直接查看gecco官網(wǎng)的“使用手冊(cè)”,吐槽一些,寫得好簡(jiǎn)單,只有說明沒有示例,有時(shí)候不太明白他的意思,又沒有例子可以參考,蛋蛋的憂傷。

    然后接著也需要將下一頁的地址給解析出來,給分頁審查元素的時(shí)候,得到下圖:

    我沒有找到只解析后面一個(gè)或者是根據(jù)標(biāo)簽內(nèi)容過濾的方法,所以我只能是用最原始的辦法,就是將所有的分頁鏈接都解析出來。所以就涉及到了另外一個(gè)東西,前面是解析單個(gè)內(nèi)容,這次解析的話,除了解析分頁的連接,我還需要頁數(shù),以判定是否是下一頁,所以需要解析的是一個(gè)對(duì)象。

    這東西跟json是一個(gè)道理,我要將一個(gè)東西直接解析為一個(gè)對(duì)象的時(shí)候,首先要將整個(gè)對(duì)象的數(shù)據(jù)拿下來,然后再把這串?dāng)?shù)據(jù)解析為對(duì)象??瓷厦娴膱D,ul標(biāo)簽的li標(biāo)簽就是一個(gè)對(duì)象的數(shù)據(jù),所以我們就將一個(gè)個(gè)li定位出來,也就有了下圖的解析(IndexPageEntity是頁數(shù)的對(duì)象)(建議第一次的時(shí)候,將IndexPageEntity改成String,看看輸出了什么):

    接著是IndexPageEntity:

    因?yàn)閍里面已經(jīng)包含了我們所要的信息,所以我們將a標(biāo)簽解析為我們需要的數(shù)據(jù)格式就可以了。

    最后附上DoutusheIndex類的詳細(xì)內(nèi)容(省略get set方法,注:代碼中必須要有)

2、創(chuàng)建一個(gè)類,我這里命名(FinishDoutusheIndex)

    這個(gè)類就是前面提到的需要用到popelines的,這個(gè)類主要的作用就是等待DoutusheIndex類解析好了網(wǎng)頁的內(nèi)容之后,跳到這一個(gè)類來處理下一步的信息,比如我這里如下圖這樣寫:

然后得到的輸出結(jié)果是(我沒有打印名稱列表):

我們需要的信息已經(jīng)打印出來了,所以我們需要完善我們的邏輯。

3、第一頁的邏輯

    第一頁的數(shù)據(jù)我們其實(shí)不需要保存的,詳情頁的數(shù)據(jù)才是我們需要的,所以第一頁的數(shù)據(jù)解析出來之后,就要執(zhí)行我們的兩個(gè)邏輯了:1、遍歷列表(打開列表的每一個(gè)詳情頁)2、跳到下一頁

    所以我們改一下FinishDoutusheIndex就可以了,修改之后如下:

    注:我們做好相關(guān)網(wǎng)頁解析就好,如果訪問了這個(gè)網(wǎng)頁,url匹配的上的話,會(huì)調(diào)起解析程序,所以這里遍歷的放心大膽的訪問連接就可以了,不需要其他操作。

4、創(chuàng)建類DoutusheEntity、FinishDoutusheEntity

    解析帖子詳情,并對(duì)我們索需要的數(shù)據(jù)進(jìn)行處理,該說的上面都說了,這里直接貼代碼就好了。

最后輸出的結(jié)果,隨便貼一點(diǎn):

5、調(diào)用

OK,搞定

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
推薦一些優(yōu)秀的開源Java爬蟲項(xiàng)目
利用python爬蟲與數(shù)據(jù)分析,打造最強(qiáng)玩法,輕松成為大神級(jí)玩家!
從零開始做人脈
基礎(chǔ)爬蟲案例:Python爬取百度貼吧內(nèi)容
從零開始的 Python 爬蟲速成指南
最新18本Python學(xué)習(xí)必備書單(2018版)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服