簡(jiǎn)易數(shù)據(jù)分析 12 | Web Scraper 翻頁(yè)——抓取分頁(yè)器翻頁(yè)的網(wǎng)頁(yè)

image

這是簡(jiǎn)易數(shù)據(jù)分析系列的第 12 篇文章。

本文首發(fā)于博客園:簡(jiǎn)易數(shù)據(jù)分析 12

前面幾篇文章我們介紹了 Web Scraper 應(yīng)對(duì)各種翻頁(yè)的解決方法,比如說(shuō)修改網(wǎng)頁(yè)鏈接加載數(shù)據(jù)點(diǎn)擊“更多按鈕“加載數(shù)據(jù)下拉自動(dòng)加載數(shù)據(jù)。今天我們說(shuō)說(shuō)一種更常見的翻頁(yè)類型——分頁(yè)器

本來(lái)想解釋一下啥叫分頁(yè)器,翻了一堆定義覺(jué)得很繁瑣,大家也不是第一年上網(wǎng)了,看張圖就知道了。我找了個(gè)功能最全的例子,支持?jǐn)?shù)字頁(yè)碼調(diào)整,上一頁(yè)下一頁(yè)和指定頁(yè)數(shù)跳轉(zhuǎn)。

image

今天我們就學(xué)學(xué),Web Scraper 怎么對(duì)付這種類型的網(wǎng)頁(yè)翻頁(yè)。

其實(shí)我們?cè)诒窘坛痰牡谝粋€(gè)例子,抓取豆瓣電影 TOP 排行榜中,豆瓣的這個(gè)電影榜單就是用分頁(yè)器分割數(shù)據(jù)的:

image

但當(dāng)時(shí)我們是找網(wǎng)頁(yè)鏈接規(guī)律抓取的,沒(méi)有利用分頁(yè)器去抓取。因?yàn)楫?dāng)一個(gè)網(wǎng)頁(yè)的鏈接變化規(guī)律時(shí),控制鏈接參數(shù)抓取是實(shí)現(xiàn)成本最低的;如果這個(gè)網(wǎng)頁(yè)進(jìn)可以翻頁(yè),但是鏈接的變化不是規(guī)律的,就得去會(huì)一會(huì)這個(gè)分頁(yè)器了。

說(shuō)這些理論有些枯燥,我們舉個(gè)翻頁(yè)鏈接不規(guī)律的例子。

8 月 2 日是蔡徐坤的生日,為了表達(dá)慶祝,在微博上粉絲們給坤坤刷了 300W 的轉(zhuǎn)發(fā)量,微博的轉(zhuǎn)發(fā)數(shù)據(jù)正好是用分頁(yè)器分割的,我們就分析一下微博的轉(zhuǎn)發(fā)信息頁(yè)面,看看這類數(shù)據(jù)怎么用 Web Scraper 抓取。

image

這條微博的直達(dá)鏈接是:

https://weibo.com/1776448504/I0gyT8aeQ?type=repost

看了他那么多的視頻,為了表達(dá)感激,我們可以點(diǎn)進(jìn)去出為坤坤加一份閱讀量。

首先我們看看第 1 頁(yè)轉(zhuǎn)發(fā)的鏈接,長(zhǎng)這個(gè)樣子:

https://weibo.com/1776448504/I0gyT8aeQ?type=repost

第 2 頁(yè)長(zhǎng)這個(gè)樣子,注意到多了個(gè) #_rnd1568563840036 參數(shù):

https://weibo.com/1776448504/I0gyT8aeQ?type=repost#_rnd1568563840036

第 3 頁(yè)參數(shù)為 #_rnd1568563861839

https://weibo.com/1776448504/I0gyT8aeQ?type=repost#_rnd1568563861839

第 4 頁(yè)參數(shù)為 #_rnd1568563882276

https://weibo.com/1776448504/I0gyT8aeQ?type=repost#_rnd1568563882276

多看幾個(gè)鏈接你就可以發(fā)現(xiàn),這個(gè)轉(zhuǎn)發(fā)網(wǎng)頁(yè)的網(wǎng)址毫無(wú)規(guī)律可言,所以只能通過(guò)分頁(yè)器去翻頁(yè)加載數(shù)據(jù)。下面就開始我們的實(shí)戰(zhàn)教學(xué)環(huán)節(jié)。

1.創(chuàng)建 SiteMap

我們首先創(chuàng)建一個(gè) SiteMap,這次取名為 cxk,起始鏈接為 https://weibo.com/1776448504/I0gyT8aeQ?type=repost

image

2.創(chuàng)建容器的 selector

因?yàn)槲覀円c(diǎn)擊分頁(yè)器,外面的容器的類型我們選為 Element Click,具體的參數(shù)解釋可以看下圖,我們之前在簡(jiǎn)易數(shù)據(jù)分析 08詳細(xì)解釋過(guò)一次,這里就不多言了。

image

container 的預(yù)覽是下圖的樣子:

image

分頁(yè)器選擇的過(guò)程可以參看下圖:

image

3.創(chuàng)建子選擇器

這幾個(gè)子選擇器都比較簡(jiǎn)單,類型都是文字選擇器,我們選擇了評(píng)論用戶名,評(píng)論內(nèi)容和評(píng)論時(shí)間三種類型的內(nèi)容。

image

4.抓取數(shù)據(jù)

按照 Sitemap cxk -> Scrape 的操作路徑就可以抓取數(shù)據(jù)了。

5.一些問(wèn)題

如果你看了我上面的教程立馬去爬數(shù)據(jù),可能遇到的第一個(gè)問(wèn)題就是,300w 的數(shù)據(jù),難道我全部爬下來(lái)嗎?

聽上去也不太現(xiàn)實(shí),畢竟 Web Scraper 針對(duì)的數(shù)據(jù)量都是相對(duì)比較小的,幾萬(wàn)數(shù)據(jù)都算多的了,數(shù)據(jù)再大你就得考慮爬取時(shí)間是否太長(zhǎng),數(shù)據(jù)如何存儲(chǔ),如何應(yīng)對(duì)網(wǎng)址的反爬蟲系統(tǒng)(比如說(shuō)冷不丁的跳出一個(gè)驗(yàn)證碼,這個(gè) Web Scraper 是無(wú)能為力的)。

考慮到這個(gè)問(wèn)題,前面的自動(dòng)控制抓取數(shù)量的教程你又看過(guò)的話,可能想著用 :nth-of-type(-n+N) 控制抓取 N 條數(shù)據(jù)。如果你嘗試了,就會(huì)發(fā)現(xiàn)這個(gè)方法根本沒(méi)用。

失效的原因其實(shí)涉及到一點(diǎn)點(diǎn)網(wǎng)頁(yè)的知識(shí)了,感興趣的話可以看看下面的解釋,不感興趣可以直接看最后的結(jié)論。

像我前面介紹的點(diǎn)擊更多加載型網(wǎng)頁(yè)下拉加載型網(wǎng)頁(yè),他們新加載的數(shù)據(jù),是在當(dāng)前頁(yè)面追加的,你一直下拉,數(shù)據(jù)一直加載,同時(shí)網(wǎng)頁(yè)的滾動(dòng)條會(huì)越來(lái)越短,這意味著所有的數(shù)據(jù)都在同一個(gè)頁(yè)面

當(dāng)我們用 :nth-of-type(-n+N) 控制加載數(shù)量時(shí),其實(shí)相當(dāng)于在這個(gè)網(wǎng)頁(yè)設(shè)立一個(gè)計(jì)數(shù)器,當(dāng)數(shù)據(jù)一直累加到我們想要的數(shù)量時(shí),就會(huì)停止抓取。

但是對(duì)于使用翻頁(yè)器的網(wǎng)頁(yè),每次的翻頁(yè)相當(dāng)于刷新當(dāng)前網(wǎng)頁(yè),這樣每次都會(huì)設(shè)立一個(gè)計(jì)數(shù)器。

比如說(shuō)你想抓取 1000 條數(shù)據(jù),但是第 1 頁(yè)網(wǎng)頁(yè)只有 20 條數(shù)據(jù),抓到最后一條了,還差 980 條;然后一翻頁(yè),又設(shè)立一個(gè)新的計(jì)數(shù)器,抓完第 2 頁(yè)的最后一條數(shù)據(jù),還差 980,一翻頁(yè)計(jì)數(shù)器就重置,又變成 1000 了......所以這個(gè)控制數(shù)量的方法就失效了。

所以結(jié)論就是,如果翻頁(yè)器類型的網(wǎng)頁(yè)想提前結(jié)束抓取,只有斷網(wǎng)的這種方法。當(dāng)然,如果你有更好的方案,可以在評(píng)論里回復(fù)我,我們可以互相討論一下。

6.總結(jié)

分頁(yè)器是一種很常見的網(wǎng)頁(yè)分頁(yè)方法,我們可以通過(guò) Web Scraper 中的 Element click 處理這種類型的網(wǎng)頁(yè),并通過(guò)斷網(wǎng)的方法結(jié)束抓取。

7.推薦閱讀

簡(jiǎn)易數(shù)據(jù)分析 05 | Web Scraper 翻頁(yè)——控制鏈接批量抓取數(shù)據(jù)

簡(jiǎn)易數(shù)據(jù)分析 08 | Web Scraper 翻頁(yè)——點(diǎn)擊「更多按鈕」翻頁(yè)

簡(jiǎn)易數(shù)據(jù)分析 10 | Web Scraper 翻頁(yè)——抓取「滾動(dòng)加載」類型網(wǎng)頁(yè)

簡(jiǎn)易數(shù)據(jù)分析 09 | Web Scraper 自動(dòng)控制抓取數(shù)量 & Web Scraper 父子選擇器

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,273評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,527評(píng)論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,010評(píng)論 1 322
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,250評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,769評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,656評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,853評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,103評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評(píng)論 1 281
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,487評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,815評(píng)論 2 372

推薦閱讀更多精彩內(nèi)容