web scraper
參考://sspai.com/u/skychx/updates
//www.jianshu.com/p/76cad8e963b5
:nth-of-type(-n+100)
元素名後加個 nth-of-type(-n+100)
,暫時只抓取前 100 條數據。
:nth-of-type(-n+N)
控制加載數量時,其實相當於在這個網頁設立一個計數器,當數據一直累加到我們想要的數量時,就會停止抓取。
通過 Element Click
點擊分頁器翻頁,只適用於網頁沒有刷新的情況,但是對於使用翻頁器的網頁,每次的翻頁相當於刷新當前網頁,這樣每次都會設立一個計數器。//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:,這樣解決了翻頁的時候頁面重新刷新的問題相當於遞歸的思想了