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:,這樣解決了翻頁的時候頁面重新刷新的問題相當於遞歸的思想了