爬蟲之圖片懶加載技術、selenium和PhantomJS
- 圖片懶加載
- selenium
- phantomJs
- 谷歌無頭瀏覽器
一.圖片懶加載
- 什麼是圖片懶加載?
- 案例分析:抓取站長素材http://sc.chinaz.com/中的圖片數據
-
- 運行結果觀察發現,咱們能夠獲取圖片的名稱,可是連接獲取的爲空,檢查後發現xpath表達式也沒有問題,究其緣由出在了哪裏呢?html
-
圖片懶加載概念:python
-
圖片懶加載是一種網頁優化技術。圖片做爲一種網絡資源,在被請求時也與普通靜態資源同樣,將佔用網絡資源,而一次性將整個頁面的全部圖片加載完,將大大增長頁面的首屏加載時間。爲了解決這種問題,經過先後端配合,使圖片僅在瀏覽器當前視窗內出現時才加載該圖片,達到減小首屏圖片請求數的技術就被稱爲「圖片懶加載」。web
-
-
網站通常如何實現圖片懶加載技術呢?chrome
-
在網頁源碼中,在img標籤中首先會使用一個「僞屬性」(一般使用src2,original......)去存放真正的圖片連接而並不是是直接存放在src屬性中。當圖片出現到頁面的可視化區域中,會動態將僞屬性替換成src屬性,完成圖片的加載。windows
-
-
站長素材案例後續分析:經過細緻觀察頁面的結構後發現,網頁中圖片的連接是存儲在了src2這個僞屬性中後端
- 案例分析:抓取站長素材http://sc.chinaz.com/中的圖片數據
二.selenium
- 什麼是selenium?
-
是Python的一個第三方庫,對外提供的接口能夠操做瀏覽器,而後讓瀏覽器完成自動化的操做。 api
-
-
環境搭建瀏覽器
-
安裝selenum:pip install selenium網絡
-
獲取某一款瀏覽器的驅動程序(以谷歌瀏覽器爲例)app
-
谷歌瀏覽器驅動下載地址:
http://chromedriver.storage.googleapis.com/index.html
-
下載的驅動程序必須和瀏覽器的版本統一,你們能夠根據
http://blog.csdn.net/huilan_same/article/details/51896672中提供的版本映射表進行對應
-
-
效果展現:
代碼介紹:
三.phantomJs
- PhantomJS是一款無界面的瀏覽器,其自動化操做流程和上述操做谷歌瀏覽器是一致的。因爲是無界面的,爲了可以展現自動化操做流程,PhantomJS爲用戶提供了一個截屏的功能,使用save_screenshot函數實現。
- 代碼演示:
-
重點:selenium+phantomjs 就是爬蟲終極解決方案:有些網站上的內容信息是經過動態加載js造成的,因此使用普通爬蟲程序沒法回去動態加載的js內容。例如豆瓣電影中的電影信息是經過下拉操做動態加載更多的電影信息。
-
綜合操做:需求是儘量多的爬取豆瓣網中的電影信息
-
四.谷歌無頭瀏覽器
- 因爲PhantomJs最近已經中止了更新和維護,因此推薦你們可使用谷歌的無頭瀏覽器,是一款無界面的谷歌瀏覽器。
- 代碼展現: