一篇文章帶你學會兩個場景下Selenium爬取動態網頁小技巧

/1 前言/

  selenium是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣,是爬複雜動態網頁的必備工具。支持的瀏覽器包括IE,Mozilla Firefox,Safari,Google Chrome,Opera等。

  這裏分兩個場景,給大家介紹Selenium爬動態網頁小技巧。


/2 場景一替換日期控件值/

  以12306網站爲例,如下圖所示,按照正常的方法,我們首先要定位到時間元素,然後調用selenium的click()方法進行點擊。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

  這種操作也是可行的。但是,過了一段時間,我們再次運行自動化代碼的時候,就會發現功能運行不正常。因爲日期更改後,日曆控件佈局發生了變化,而且操作起來很麻煩。

  我們先看一下日期框的元素,如下圖所示:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

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

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

  第一行是要輸入的日期,第二行是JavaScript代碼,“documen.getElementById”是通過HTML的“id”定位元素,通過改變該元素的“value”實現值的變化。

效果演示如下:



/3 場景二動態網頁自動下拉/

  一些複雜的動態網頁需要下拉才能把元素顯示完全,例如騰訊視頻主頁,如下圖所示:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

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

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

  小編這裏採取的分步下拉的方法,每次滾動1/10,“window.scrollTo”爲向下滑動的命令,“document.body.clientHeight”爲整個窗口的高度,“h=(i/10)”爲每次滑動的高度。

  效果演示如下:



/4 結語/

  將JavaScript應用到selenium中可以幫我們解決很多問題,這裏舉兩個小例子只是拋磚引玉,希望大家以後遇到selenium不好解決的問題時可以考慮在JavaScript身上尋找突破。

  歡迎大家積極嘗試,消耗在家的無聊時間本文涉及的代碼都上傳到了github地址上,https://github.com/cassieeric/python_crawler/tree/master/selenium_skill,覺得不錯,記得給個star噢~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章