Web Scraper 翻頁——抓取分頁器翻頁的網頁(Web Scraper 高級用法)| 簡易數據分析 12

這是簡易數據分析系列的第 12 篇文章。html

前面幾篇文章咱們介紹了 Web Scraper 應對各類翻頁的解決方法,好比說修改網頁連接加載數據點擊「更多按鈕「加載數據下拉自動加載數據。今天咱們說說一種更常見的翻頁類型——分頁器web

原本想解釋一下啥叫分頁器,翻了一堆定義以爲很繁瑣,你們也不是第一年上網了,看張圖就知道了。我找了個功能最全的例子,支持數字頁碼調整,上一頁下一頁和指定頁數跳轉。post

今天咱們就學學,Web Scraper 怎麼對付這種類型的網頁翻頁。spa

其實咱們在本教程的第一個例子,抓取豆瓣電影 TOP 排行榜中,豆瓣的這個電影榜單就是用分頁器分割數據的:code

但當時咱們是找網頁連接規律抓取的,沒有利用分頁器去抓取。由於當一個網頁的連接變化規律時,控制連接參數抓取是實現成本最低的;若是這個網頁進能夠翻頁,可是連接的變化不是規律的,就得去會一會這個分頁器了。視頻

說這些理論有些枯燥,咱們舉個翻頁連接不規律的例子。htm

8 月 2 日是蔡徐坤的生日,爲了表達慶祝,在微博上粉絲們給坤坤刷了 300W 的轉發量,微博的轉發數據正好是用分頁器分割的,咱們就分析一下微博的轉發信息頁面,看看這類數據怎麼用 Web Scraper 抓取。blog

這條微博的直達連接是:教程

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

看了他那麼多的視頻,爲了表達感激,咱們能夠點進去出爲坤坤加一份閱讀量。

首先咱們看看第 1 頁轉發的連接,長這個樣子:

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

第 2 頁長這個樣子,注意到多了個 #_rnd1568563840036 參數:

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

第 3 頁參數爲 #_rnd1568563861839

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

第 4 頁參數爲 #_rnd1568563882276

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

多看幾個連接你就能夠發現,這個轉發網頁的網址毫無規律可言,因此只能經過分頁器去翻頁加載數據。下面就開始咱們的實戰教學環節。

1.建立 SiteMap

咱們首先建立一個 SiteMap,此次取名爲 cxk,起始連接爲 https://weibo.com/1776448504/I0gyT8aeQ?type=repost。

2.建立容器的 selector

由於咱們要點擊分頁器,外面的容器的類型咱們選爲 Element Click,具體的參數解釋能夠看下圖,咱們以前在簡易數據分析 08詳細解釋過一次,這裏就很少言了。

container 的預覽是下圖的樣子:

分頁器選擇的過程能夠參看下圖:

3.建立子選擇器

這幾個子選擇器都比較簡單,類型都是文字選擇器,咱們選擇了評論用戶名,評論內容和評論時間三種類型的內容。

4.抓取數據

按照 Sitemap cxk -> Scrape 的操做路徑就能夠抓取數據了。

5.一些問題

若是你看了我上面的教程立馬去爬數據,可能遇到的第一個問題就是,300w 的數據,難道我所有爬下來嗎?

聽上去也不太現實,畢竟 Web Scraper 針對的數據量都是相對比較小的,幾萬數據都算多的了,數據再大你就得考慮爬取時間是否太長,數據如何存儲,如何應對網址的反爬蟲系統(好比說冷不丁的跳出一個驗證碼,這個 Web Scraper 是無能爲力的)。

考慮到這個問題,前面的自動控制抓取數量的教程你又看過的話,可能想着用 :nth-of-type(-n+N) 控制抓取 N 條數據。若是你嘗試了,就會發現這個方法根本沒用。

失效的緣由其實涉及到一點點網頁的知識了,感興趣的話能夠看看下面的解釋,不感興趣能夠直接看最後的結論。

像我前面介紹的點擊更多加載型網頁下拉加載型網頁,他們新加載的數據,是在當前頁面追加的,你一直下拉,數據一直加載,同時網頁的滾動條會愈來愈短,這意味着全部的數據都在同一個頁面

當咱們用 :nth-of-type(-n+N) 控制加載數量時,其實至關於在這個網頁設立一個計數器,當數據一直累加到咱們想要的數量時,就會中止抓取。

可是對於使用翻頁器的網頁,每次的翻頁至關於刷新當前網頁,這樣每次都會設立一個計數器。

好比說你想抓取 1000 條數據,可是第 1 頁網頁只有 20 條數據,抓到最後一條了,還差 980 條;而後一翻頁,又設立一個新的計數器,抓完第 2 頁的最後一條數據,還差 980,一翻頁計數器就重置,又變成 1000 了......因此這個控制數量的方法就失效了。

因此結論就是,若是翻頁器類型的網頁想提早結束抓取,只有斷網的這種方法。固然,若是你有更好的方案,能夠在評論裏回覆我,咱們能夠互相討論一下。

6.總結

分頁器是一種很常見的網頁分頁方法,咱們能夠經過 Web Scraper 中的 Element click 處理這種類型的網頁,並經過斷網的方法結束抓取。

7.推薦閱讀

簡易數據分析 05 | Web Scraper 翻頁——控制連接批量抓取數據

簡易數據分析 08 | Web Scraper 翻頁——點擊「更多按鈕」翻頁

簡易數據分析 10 | Web Scraper 翻頁——抓取「滾動加載」類型網頁

簡易數據分析 09 | Web Scraper 自動控制抓取數量 & Web Scraper 父子選擇器

8.聯繫我

由於文章發在各大平臺上,帳號較多不能及時回覆評論和私信,有問題可關注公衆號 ——「鹵代烴實驗室」,關注上車防失聯。

img

原文出處:https://www.cnblogs.com/web-scraper/p/web_scraper_element_click_once.html

相關文章
相關標籤/搜索