這是簡易數據分析系列的第 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 頁轉發的連接,長這個樣子:
第 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
多看幾個連接你就能夠發現,這個轉發網頁的網址毫無規律可言,因此只能經過分頁器去翻頁加載數據。下面就開始咱們的實戰教學環節。
咱們首先建立一個 SiteMap,此次取名爲 cxk
,起始連接爲 https://weibo.com/1776448504/I0gyT8aeQ?type=repost。
由於咱們要點擊分頁器,外面的容器的類型咱們選爲 Element Click
,具體的參數解釋能夠看下圖,咱們以前在簡易數據分析 08詳細解釋過一次,這裏就很少言了。
container 的預覽是下圖的樣子:
分頁器選擇的過程能夠參看下圖:
這幾個子選擇器都比較簡單,類型都是文字選擇器,咱們選擇了評論用戶名,評論內容和評論時間三種類型的內容。
按照 Sitemap cxk
-> Scrape
的操做路徑就能夠抓取數據了。
若是你看了我上面的教程立馬去爬數據,可能遇到的第一個問題就是,300w 的數據,難道我所有爬下來嗎?
聽上去也不太現實,畢竟 Web Scraper 針對的數據量都是相對比較小的,幾萬數據都算多的了,數據再大你就得考慮爬取時間是否太長,數據如何存儲,如何應對網址的反爬蟲系統(好比說冷不丁的跳出一個驗證碼,這個 Web Scraper 是無能爲力的)。
考慮到這個問題,前面的自動控制抓取數量的教程你又看過的話,可能想着用 :nth-of-type(-n+N)
控制抓取 N 條數據。若是你嘗試了,就會發現這個方法根本沒用。
失效的緣由其實涉及到一點點網頁的知識了,感興趣的話能夠看看下面的解釋,不感興趣能夠直接看最後的結論。
像我前面介紹的點擊更多加載型網頁和下拉加載型網頁,他們新加載的數據,是在當前頁面追加的,你一直下拉,數據一直加載,同時網頁的滾動條會愈來愈短,這意味着全部的數據都在同一個頁面。
當咱們用 :nth-of-type(-n+N)
控制加載數量時,其實至關於在這個網頁設立一個計數器,當數據一直累加到咱們想要的數量時,就會中止抓取。
可是對於使用翻頁器的網頁,每次的翻頁至關於刷新當前網頁,這樣每次都會設立一個計數器。
好比說你想抓取 1000 條數據,可是第 1 頁網頁只有 20 條數據,抓到最後一條了,還差 980 條;而後一翻頁,又設立一個新的計數器,抓完第 2 頁的最後一條數據,還差 980,一翻頁計數器就重置,又變成 1000 了......因此這個控制數量的方法就失效了。
因此結論就是,若是翻頁器類型的網頁想提早結束抓取,只有斷網的這種方法。固然,若是你有更好的方案,能夠在評論裏回覆我,咱們能夠互相討論一下。
分頁器是一種很常見的網頁分頁方法,咱們能夠經過 Web Scraper 中的 Element click
處理這種類型的網頁,並經過斷網的方法結束抓取。
簡易數據分析 05 | Web Scraper 翻頁——控制連接批量抓取數據
簡易數據分析 08 | Web Scraper 翻頁——點擊「更多按鈕」翻頁
簡易數據分析 10 | Web Scraper 翻頁——抓取「滾動加載」類型網頁
簡易數據分析 09 | Web Scraper 自動控制抓取數量 & Web Scraper 父子選擇器
由於文章發在各大平臺上,帳號較多不能及時回覆評論和私信,有問題可關注公衆號 ——「鹵代烴實驗室」,關注上車防失聯。
原文出處:https://www.cnblogs.com/web-scraper/p/web_scraper_element_click_once.html