python | 爬蟲筆記(七)- 動態渲染頁面抓取Selenium

JavaScript 動態渲染的頁面不止 Ajax 這一種
另外有的ajax渲染接口含有不少加密參數,難以直接找出其規律
經過模擬瀏覽器運行的方式來實現,Selenium、Splash、PyV八、Ghost 等

7.1 Selenium的使用

自動化測試工具,支持多種瀏覽器。爬蟲中主要用來解決js渲染問題
用 Selenium 來驅動瀏覽器加載網頁的話,能夠直接拿到JavaScript 渲染的結果了,加密不用再擔憂。
1- 聲明瀏覽器對象
browser = webdriver.Chrome()
2- 訪問頁面
browser.get('https://www.taobao.com')
3- 查找節點
input_first = browser.find_element(By.ID, 'q') #單個節點
lis = browser.find_elements_by_css_selector('.service-bd li')
4- 節點交互
...
 
5- 獲取節點信息
經過 page_source 屬性能夠獲取網頁的源代碼,獲取源代碼以後就能夠使用解析庫如正則、BeautifulSoup、PyQuery 等來提取信息了。
不過 Selenium 已經提供了選擇節點的方法,返回WebElement 類型,能夠經過相關方法或屬性來解析
 
6- 獲取屬性
7- 切換frame
 
8- 延時等待
確保節點已經加載出來
- 隱式等待
當查找節點而節點並無當即出現的時候,隱式等待將等待一段時間再查找 DOM,默認的時間是 0。 implicitly_wait() 
- 顯式等待
指定好要查找的節點,而後指定一個最長等待時間。若是在規定時間內加載出來了這個節點,那就返回查找的節點,若是到了規定時間依然沒有加載出該節點,則會拋出超時異常。
 

##本系列內容爲《python3爬蟲開發實戰》學習筆記。本系列博客列表以下:css

(零)學習路線html

(一)開發環境配置python

(二)爬蟲基礎web

(三)基本庫使用ajax

(四)解析庫使用瀏覽器

(五)數據存儲工具

(六)Ajax數據爬取學習

(七)動態渲染頁面爬取Selenium測試

持續更新...ui

對應代碼請見:..

相關文章
相關標籤/搜索