Web Scraper傻瓜式爬蟲(chóng)插件之進(jìn)階套路

圖文|娘酷

上一篇文章中我介紹了Web Scraper的基本用法,接下來(lái)的內(nèi)容中,我將接著介紹Web Scraper在收集多層級(jí)的數(shù)據(jù)的進(jìn)階套路。


進(jìn)階套路

仍然以我的簡(jiǎn)書關(guān)注列表為例,這一次我不僅想要收集我都關(guān)注了誰(shuí),我還想要他們的一些個(gè)人信息,如:他們的粉絲數(shù),關(guān)注數(shù),文章數(shù),一共寫過(guò)多少字。

如圖所示,是關(guān)注列表中的第一位

我的關(guān)注列表中有96張如圖所示的卡片,我們暫且稱之為名片。每張名片中包含了此人的多維度信息,頭像、網(wǎng)名、關(guān)注數(shù)、粉絲數(shù)、文章數(shù)、寫了多少字,獲得了多少個(gè)喜歡,甚至還可以算上單擊他網(wǎng)名跳轉(zhuǎn)的個(gè)人主頁(yè)的鏈接。那么這里,就存在一個(gè)二級(jí)包含關(guān)系,名片是要收集的一級(jí)對(duì)象,而名字,粉絲數(shù),關(guān)注數(shù)則是二級(jí)對(duì)象。而像名片這樣在頁(yè)面中存在多個(gè),自己本身也包含多個(gè)二級(jí)對(duì)象的目標(biāo),我們稱其為元素。抓取時(shí)Type選擇為Element。

新建:shift+ctrl+I 喚出開(kāi)發(fā)者工具 -> Web Scraper -> Create New Sitemap -> Sitemap Name:niangkufollowers; sitemap URL: http://www.itdecent.cn/users/f354e815185f/following

添加元素對(duì)象(element):元素就像是一個(gè)書包內(nèi)部可以包含多個(gè)目標(biāo),所以此處為了收集每個(gè)人的相關(guān)信息,將每一個(gè)名片看做一個(gè)元素。創(chuàng)建Selector,Type設(shè)定為Element,單擊“select”按鈕后,將鼠標(biāo)移至名片處,選中第一個(gè)和第二個(gè)名片后,WS會(huì)自動(dòng)圈起頁(yè)面上其他名片(這個(gè)頁(yè)面上有多個(gè)名片記得要勾選multiple)。Done Selecting! -> Save Selector

選擇“國(guó)學(xué)上官清晨”和“談心社”的名片后WS會(huì)自動(dòng)選擇其他相同類型的元素??

添加元素內(nèi)二級(jí)目標(biāo):?jiǎn)螕鬍lement -> 依次添加二級(jí)目標(biāo)(Add New Selector ):網(wǎng)名(name), 關(guān)注數(shù)(following),粉絲數(shù)(follower),文章數(shù)(posts),字?jǐn)?shù)(counts)。類型全部選擇“Text”。因?yàn)槊總€(gè)元素內(nèi)都只含有一個(gè)網(wǎng)名,則不用勾選multiple。添加過(guò)程參照 基礎(chǔ)套路

添加二級(jí)目標(biāo)時(shí)WS會(huì)自動(dòng)標(biāo)黃第一個(gè)元素,可以直接在黃色區(qū)內(nèi)選擇目標(biāo)??

有時(shí)想要選中的目標(biāo)是帶有跳轉(zhuǎn)連接的,如本例中的網(wǎng)名,單擊后會(huì)跳轉(zhuǎn)就無(wú)法在selector中保存,這里的小技巧是,可以在“Done Selecting!”按鈕左側(cè)單擊“Enable key”,就可以使用鍵盤進(jìn)行操作。將鼠標(biāo)移至對(duì)象上,單擊鍵盤S鍵,就可以選中了。

讓我們?cè)倥酪淮?!不用設(shè)置delay直接啟動(dòng)!Sitemap(niangkufollowers) -> Scrape?

YEAH!我們有了更多維度的數(shù)據(jù)

雖然我們有了更多維度的數(shù)據(jù),但仍結(jié)果只有9個(gè)。如果我們想要跟多的數(shù)據(jù)該怎么辦?仔細(xì)看一下這個(gè)網(wǎng)頁(yè),你會(huì)發(fā)現(xiàn),它的加載方式是:滑到底部時(shí)會(huì)自動(dòng)加載9條名片。滑動(dòng)時(shí)加載,是動(dòng)態(tài)加載的一種方式。除了滑動(dòng)加載,還有點(diǎn)擊更多按鈕加載,點(diǎn)擊頁(yè)碼加載。只有解決了網(wǎng)頁(yè)的加載,讓網(wǎng)頁(yè)順順利利的把數(shù)據(jù)吐出來(lái),我們才能完成完整的收集。


滑動(dòng)加載

點(diǎn)擊Sitemap(niangkufollowers) -> Selectors ->點(diǎn)擊"Edit"編輯一級(jí)元素

果斷把element的type改成“Element scroll down”

該類型會(huì)持續(xù)下滑把相同元素遍歷為止
在Delay處寫1500 或者2000都可以

這個(gè)Delay的意思就是讓它向下滾動(dòng)的時(shí)候等一會(huì),滾太快抓不完就GG了,有時(shí)候抓太快也會(huì)觸發(fā)網(wǎng)頁(yè)的防爬蟲(chóng)機(jī)制就直接把你的網(wǎng)頁(yè)關(guān)了。所以慢一點(diǎn)等一會(huì)效果更好噢。

讓我們?cè)僭囈淮?!Scrape!

YESSSSS! 搞定!

讓我們?cè)賮?lái)看看其他加載方式下該如何操作呢


頁(yè)碼加載

當(dāng)你想要抓取的頁(yè)面地址帶有頁(yè)碼的時(shí)候,處理辦法在大欣的回答里有體現(xiàn),直接加上你要抓取頁(yè)數(shù)就好了。如:

https://www.zhihu.com/people/amuro1230/followers?page=2

其他步驟操作方法如上,只用在新建sitemap時(shí)將地址改寫為:https://www.zhihu.com/people/amuro1230/followers?page=[1-69],蟲(chóng)蟲(chóng)就會(huì)自動(dòng)翻頁(yè)至第69頁(yè)時(shí)結(jié)束

YEAH 全部抓下來(lái)啦


點(diǎn)擊加載

有些頁(yè)面的加載方式是地址不變,點(diǎn)擊頁(yè)碼,或者固定按鈕如“下一頁(yè)”,“點(diǎn)擊加載”等進(jìn)行加載。那么這里也分為兩類情況來(lái)討論:只點(diǎn)擊一次(如數(shù)字頁(yè)碼每個(gè)頁(yè)碼只點(diǎn)擊一次),和點(diǎn)擊多次(如多次點(diǎn)擊同一個(gè)翻頁(yè)按鈕)

點(diǎn)擊一次(Click Once)

我們以蝦米上煙鬼的新歌Sick boy這首歌為例,講一下如何收集蝦米音樂(lè)的歌曲頁(yè)面下方的評(píng)論列表內(nèi)容。

http://www.xiami.com/album/9cCZb9eaeb8?spm=a1z1s.6843761.1478643713.4.mAVSas

一共四頁(yè),共35條

可以看到評(píng)論仍然是呈卡片式的,可以設(shè)置為元素類型,每個(gè)卡片包含網(wǎng)名,時(shí)間,評(píng)論,贊數(shù),弱數(shù)。 抓取評(píng)論的邏輯是:先逐條抓下該頁(yè)的卡片,然后點(diǎn)擊下一個(gè)頁(yè)碼,再重復(fù)以上動(dòng)作。點(diǎn)擊下一個(gè)頁(yè)碼意味著:2,3,4依次點(diǎn)擊,對(duì)象唯一且只點(diǎn)擊一次。我們先按照進(jìn)階套路中的步驟設(shè)置好element和二級(jí)目標(biāo)。

此時(shí) 可以先試一下能否將第一頁(yè)的內(nèi)容抓下來(lái)

然后按照滑動(dòng)加載中步驟,進(jìn)入element編輯頁(yè)面,將type修改為element click。

Selector的設(shè)置方法與上述元素的選擇相同(如果是如上述步驟進(jìn)行修改到這一步的,則不用重新選擇)

在Click Selector處將頁(yè)碼依次選上,同時(shí)下方勾選multiple;Click type 點(diǎn)擊類型為點(diǎn)擊一次,即選中的對(duì)象每個(gè)只點(diǎn)擊一次;Click element uniqueness 點(diǎn)擊對(duì)象的唯一性中選擇唯一文本,即每個(gè)數(shù)字只出現(xiàn)一次;delay 延遲設(shè)置為2000.

讓我們?cè)囈淮?!Scrape!

ヾ(?°?°?)??完美


點(diǎn)擊多次(Click More)

在以上抓取蝦米音樂(lè)評(píng)論的邏輯是順序單擊每個(gè)頁(yè)碼,我們也可以采取另一種方法,多次點(diǎn)擊“下一頁(yè)”這一個(gè)按鈕,直到這個(gè)網(wǎng)頁(yè)沒(méi)有更多新內(nèi)容。這種方法適用于沒(méi)有頁(yè)碼按鈕,只有“下一頁(yè)”或者“查看更多”按鈕時(shí)的狀況,比如:

點(diǎn)擊查看更多以加載

本例選擇了絕對(duì)伏特加的廣告頁(yè)面(不知道網(wǎng)址是否永久):

http://absolutnights.cn/100nights/

目標(biāo)仍然為收集卡片上的信息:地址,標(biāo)題,內(nèi)容,點(diǎn)贊數(shù),評(píng)論數(shù)等等。Element和二級(jí)目標(biāo)的設(shè)置參照上述步驟。

進(jìn)入element編輯頁(yè)面,將type修改為element click -> Click Selector 選擇“查看更多”按鈕 -> Click type選擇Click more -> Delay 設(shè)置為2000 -> Save !!

然我們來(lái)看一下結(jié)果。

以上。

到這里,相信大家已經(jīng)可以處理大部分的網(wǎng)頁(yè)了,下一期我將具體介紹每種類型的選擇器的應(yīng)用場(chǎng)景(Selector),大家就會(huì)在設(shè)置蟲(chóng)蟲(chóng)的過(guò)程中更加得心應(yīng)手了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容