一篇文章帶你學會兩個場景下Selenium爬取動態網頁小技巧
- 2020 年 3 月 16 日
- 筆記
/1 前言/
selenium是一個用於Web應用程式測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣,是爬複雜動態網頁的必備工具。支援的瀏覽器包括IE,Mozilla Firefox,Safari,Google Chrome,Opera等。
這裡分兩個場景,給大家介紹Selenium爬動態網頁小技巧。
/2 場景一:替換日期控制項值/
以12306網站為例,如下圖所示,按照正常的方法,我們首先要定位到時間元素,然後調用selenium的click()方法進行點擊。

這種操作也是可行的。但是,過了一段時間,我們再次運行自動化程式碼的時候,就會發現功能運行不正常。因為日期更改後,日曆控制項布局發生了變化,而且操作起來很麻煩。
我們先看一下日期框的元素,如下圖所示:

重點看一下value=『text』,這種屬性值可以通過JavaScript來改變,三行程式碼就能解決這個問題,如下圖所示:

第一行是要輸入的日期,第二行是JavaScript程式碼,「documen.getElementById」是通過HTML的「id」定位元素,通過改變該元素的「value」實現值的變化。
效果演示如下:
/3 場景二:動態網頁自動下拉/
一些複雜的動態網頁需要下拉才能把元素顯示完全,例如騰訊影片主頁,如下圖所示:

如果需要自動爬取這類動態網頁,我們同樣可以執行JavasScript的方法來實現,用5行程式碼就可以連續滑動網頁,將動態網頁元素全部展示出來,程式碼如下圖所示:

小編這裡採取的分步下拉的方法,每次滾動1/10,「window.scrollTo」為向下滑動的命令,「document.body.clientHeight」為整個窗口的高度,「h=(i/10)」為每次滑動的高度。
效果演示如下:
/4 結語/
將JavaScript應用到selenium中可以幫我們解決很多問題,這裡舉兩個小例子只是拋磚引玉,希望大家以後遇到selenium不好解決的問題時可以考慮在JavaScript身上尋找突破。
歡迎大家積極嘗試,消耗在家的無聊時間。本文涉及的程式碼都上傳到了github地址上,後台回復「selenium」這個單詞即可獲取程式碼。
——————- End ——————-