🌟想系統化學習爬蟲技術?看看這個:[數據抓取] Python 網絡爬蟲 - 學習手冊-CSDN博客
0x01:WebDriver 類基礎屬性 & 方法
為模仿用戶真實操作瀏覽器的基本過程,Selenium 的 WebDriver 模塊提供了一個 WebDriver 類(表示瀏覽器),該類中提供了一些諸如打開瀏覽器、關閉瀏覽器、刷新瀏覽器、前進、后退等入門操作的方法和屬性:
屬性 OR 方法 | 解析 |
---|---|
title | 獲取當前頁面的標題 |
current_url | 獲取當前頁面的 URL 地址 |
page_source | 獲取當前頁面的 HTML 代碼(渲染后的) |
get() | 根據指定的 URL 地址訪問頁面 |
maximize_window() | 設置瀏覽器窗口最大化 |
forward() | 頁面前進 |
back() | 頁面后退 |
refresh() | 刷新當前頁面 |
save_screenshot() | 截取當前瀏覽器窗口 |
close() | 關閉當前頁面 |
quit() | 關閉瀏覽器 |
0x02:get() 方法 & page_source 屬性
使用 get()
方法可以操作瀏覽器訪問的目標網頁,使用 page_source
可以獲取當前頁面整體的源代碼(渲染后的),比如下面的例子,我們嘗試訪問 taobao.com 并抓取渲染好的頁面:
from selenium import webdriver
import time
?
driver = webdriver.Chrome() # 創建瀏覽器對象
driver.get("https://taobao.com") ? ? ? ? ?# 訪問淘寶首頁
?
# 因為從訪問淘寶到淘寶加載商品數據中間有一段時間,所以我們得強制等待一會,等待頁面完全加載
time.sleep(3) ? ? ? ? ? ? ?# 等待 3 秒
print(driver.page_source) ?# 打印渲染好的頁面
# print(driver.title) ? ? # 獲取當前頁面的標題
# print(driver.current_url) # 獲取當前頁面的 URL 地址
如上,我們成功抓取了淘寶官網動態加載后的頁面數據,只要再結合之前學習的數據提取方法,我們就能夠很輕松的從動態頁面中抓取我們想要的數據啦。
對于 title
屬性與 current_url
屬性相信聰明如你一定知道是提取啥的了吧,筆者后面就不特意講了,如果不知道的話,自己跑跑唄(把上面注釋去掉就行)。
0x03:maximize_window() 方法
使用 Selenium 啟動瀏覽器后,瀏覽器的窗口默認不是以最大化形式顯示的,此時通過調用 maximize_window()
方法即可實現瀏覽器窗口最大化:
from selenium import webdriver
import time
?
driver = webdriver.Chrome() # 創建瀏覽器對象
driver.get("https://taobao.com") ? ? ? ? ?# 訪問淘寶首頁
?
# 讓瀏覽器窗口最大化
driver.maximize_window()
0x04:forward()、back()、refresh() 方法
經常用瀏覽器的你肯定對下面三個小按鈕非常熟悉,它們就是后退(←)、前進(→)和刷新按鈕:
下面介紹 forward()
、back()
、refresh()
方法就對應上面那幾個功能,下面是一個示例代碼:
from selenium import webdriver
import time
?
driver = webdriver.Chrome() # 創建瀏覽器對象
driver.maximize_window() ? ?# 讓瀏覽器窗口最大化
?
driver.get("https://taobao.com") ? ? ? ? ?# 訪問淘寶首頁
time.sleep(3) ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 暫停三秒
driver.get("https://www.baidu.com") ? ? ? # 訪問百度首頁
time.sleep(3) ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 暫停三秒
driver.back() ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 模擬回退按鈕,回退到淘寶首頁
time.sleep(3) ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 暫停三秒
driver.forward() ? ? ? ? ? ? ? ? ? ? ? ? ?# 模擬前進按鈕,前進到百度首頁
time.sleep(3) ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 暫停三秒
driver.refresh() ? ? ? ? ? ? ? ? ? ? ? ? ?# 模擬刷新按鈕,刷新頁面
對于代碼的執行效果,還得是觀眾老爺自己運行看看(筆者建議是自己敲一遍),這里筆者就不放圖了。
0x05:save_screenshot()、close()、quit() 方法
通過 WebDriver 類的 save_screenshot()
放啊我們可以截取當前的窗口并將其保存為 PNG 格式的圖像文件,比如下面這個例子,我們嘗試截取淘寶首頁圖片,并保存為 taobao.png
:
from selenium import webdriver
import time
?
driver = webdriver.Chrome() # 創建瀏覽器對象
driver.maximize_window() ? ?# 讓瀏覽器窗口最大化
?
driver.get("https://taobao.com") ? ? ? ? ?# 訪問淘寶首頁
?
print("[ + ] 成功訪問淘寶首頁! 三秒后開始截圖操作 ....")
time.sleep(3)
?
driver.save_screenshot('taobao.png')
print("[ + ] 截屏完成,保存為了 taobao.png,三秒后將關閉當前頁面 ....")
time.sleep(3)
?
driver.close() # 退出當前頁面
print("[ + ] 成功關閉頁面, 3 秒鐘后將關閉瀏覽器,退出程序 .....")
time.sleep(3)
?
driver.quit() ?# 退出瀏覽器