參考:https://sspai.com/u/skychx/updates
https://www.jianshu.com/p/76cad8e963b5
:nth-of-type(-n+100)
元素名後加個 nth-of-type(-n+100)
,暫時只抓取前 100 條資料。
:nth-of-type(-n+N)
控制載入數量時,其實相當於在這個網頁設立一個計數器,當資料一直累加到我們想要的數量時,就會停止抓取。
通過 Element Click
點選分頁器翻頁,只適用於網頁沒有重新整理的情況,但是對於使用翻頁器的網頁,每次的翻頁相當於重新整理當前網頁,這樣每次都會設立一個計數器。https://sspai.com/post/57638
比如說你想抓取 1000 條資料,但是第 1 頁網頁只有 20 條資料,抓到最後一條了,還差 980 條;然後一翻頁,又設立一個新的計數器,抓完第 2 頁的最後一條資料,還差 980,一翻頁計數器就重置,又變成 1000 了......所以這個控制數量的方法就失效了。
所以結論就是,如果翻頁器型別的網頁想提前結束抓取,只有斷網的這種方法。
建立詳情頁子選擇器
當你點選連結後就會發現,瀏覽器會在一個新的 Tab 頁開啟詳情頁,但是 Web Scraper 的選擇視窗開在列表頁,無法跨頁面選擇想要的資料。
處理這個問題也很簡單,你可以複製詳情頁的連結,拷貝到列表頁所在的 Tab 頁裡,然後回車重新載入,這樣就可以在當前頁面選擇了。
抓取前我們要把等待時間調整得大一些,預設時間是 2000 ms,我這裡改成了 5000 ms。
P
鍵,就可以匹配到標題的父標籤
S:Select,按下鍵盤的 S 鍵,選擇選中的元素
P:Parent,按下鍵盤的 P 鍵,選擇選中元素的父節點
C:Child,按下鍵盤的 C 鍵,選擇選中元素的子節點
Click type
點選型別,click more 表示點選多次,因為我們要抓取批量資料,這裡就選擇 click more,還有一個 click once 選項,點選一次
2.Click element uniqueness
這個選項是控制 Web Scraper 什麼時候停止抓取資料的。比如說 Unique Text,表示文字改變時停止抓取資料。
我們都知道,一個網站的資料不可能是無窮無盡的,總有載入完的時候,這時候「載入更多」按鈕文字可能就變成「沒有更多」、「沒有更多資料」、「載入完了」等文字,當文字變動時,Web scraper 就會知道沒有更多資料了,會自動停止抓取資料。
3.Multiple
這個我們的老朋友了,表示是否多選,這裡我們要抓取多條資料,當然要打勾。
4.Discard initial elements
是否丟棄初始元素,這個主要是去除一些網站的重複資料用的,不是很重要,我們這裡也用不到,直接選擇 Never discard,從不丟棄資料。
5.Delay
延遲時間,因為點選載入更多後,資料載入需要一段時間,delay 就是等待資料載入的時間。一般我們設定要大於等於 2000,因為延遲 2s 是一個比較合理的資料,如果網路不好,我們可以設定更大的數字。
container注意把 Type 型別改為 Element(元素),因為在 Web Scraper 裡,只有元素型別才能包含多個內容。
因為我們是在 container 內選擇文字的,一個 container 內只有一個電影名,所以多選不要勾選,要不然會抓取失敗。
【也就是說在選擇容器的時候,要勾選multiple,意味著爬取所有的容器,但是後面的節點只是取每一個節點裡面的一個,所以不能勾選多選】
Web Scraper 對中文關鍵字索引的支援不太友好,所以會丟擲一些詭異的 bug,因此我並不建議大家用它的 Table
功能。
如果真的想抓取表格資料,我們可以用之前的方案,先建立一個型別為 Element
的 container,然後在 container 裡再手動建立子選擇器,這樣就可以規避這個問題。
要藉助 Link 選擇器來輔助我們翻頁,Parent Selectors
——父選擇器。next_page 這次要有兩個父節點——_root 和 next_page,鍵盤按 shift 再滑鼠點選就可以多選了,儲存 next_page 選擇器後,在它的同級下再建立 container 節點,用來抓取電影資料
翻頁選擇器節點 next_page 和資料選擇器節點 container 是同一級,兩個節點的父節點都是兩個:_root 和 next_page:,這樣解決了翻頁的時候頁面重新重新整理的問題相當於遞迴的思想了