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


JavaScript 動態渲染的頁面不止 Ajax 這一種
另外有的ajax渲染接口含有很多加密參數,難以直接找出其規律
通過模擬瀏覽器運行的方式來實現,Selenium、Splash、PyV8、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爬蟲開發實戰》學習筆記。本系列博客列表如下:

(零)學習路線

(一)開發環境配置

(二)爬蟲基礎

(三)基本庫使用

(四)解析庫使用

(五)數據存儲

(六)Ajax數據爬取

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

持續更新...

對應代碼請見:..

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM