一、Selenium 庫核心認知
Selenium 庫是 Web 應用程序測試與自動化操作的利器 ,能驅動瀏覽器(如 Edge、Firefox 等)執行點擊、輸入、打開、驗證等操作?。與 Requests 庫差異顯著:Requests 庫僅能獲取網頁原始代碼,而 Selenium 基于瀏覽器驅動程序工作,瀏覽器可渲染網頁源代碼,借此能輕松拿到渲染后的數據信息(如 JS 動態加載內容 ),完美解決 Requests 庫無法處理的動態頁面數據提取難題。
二、使用 Selenium 庫前的準備
(一)安裝 WebDriver
瀏覽器依托內核(如 Edge 瀏覽器基于 Chromium 內核 )運行,Selenium 驅動瀏覽器需對應內核的 WebDriver 。以 Edge 瀏覽器為例:
- 確定瀏覽器內核版本:打開 Edge 瀏覽器,在設置 - 關于 Microsoft Edge 中查看版本。
- 下載匹配的 EdgeDriver:訪問微軟官方 EdgeDriver 下載頁(Microsoft Edge WebDriver | Microsoft Edge Developer?),選擇與瀏覽器版本適配的 EdgeDriver(版本盡量貼近 )。
- 配置驅動程序:解壓下載的 EdgeDriver,將?
msedgedriver.exe
(Windows 系統 )移動到 Python 安裝目錄的?Scripts
?文件夾(通過?where python
(Windows)或?which python3
(macOS/Linux )命令查找 Python 路徑 ),完成環境關聯。
(二)安裝 Selenium 庫
在命令提示符(Windows)或終端(macOS/Linux )執行:
pip install selenium
?
安裝后,用?pip show selenium
?查看庫信息,確認安裝成功。
三、驅動瀏覽器(以 Edge 為例 )
Selenium 支持多種瀏覽器,驅動 Edge 瀏覽器代碼如下:
from selenium import webdriver
from selenium.webdriver.edge.options import Options # 創建瀏覽器配置對象
edge_options = Options()
# 綁定 Edge 瀏覽器可執行文件路徑(需替換為你電腦中 Edge 的實際安裝路徑)
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
# 初始化 Edge 瀏覽器驅動,通過配置對象關聯瀏覽器
driver = webdriver.Edge(options=edge_options)
四、加載網頁
(一)get()
?方法加載單網頁
get(url)
?可在當前瀏覽器會話打開指定網頁,示例:
from selenium import webdriver
from selenium.webdriver.edge.options import Options edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
# 加載人民郵電出版社官網期刊頁
driver.get('https://www.ptpress.com.cn/periodical')
執行后,Edge 瀏覽器自動啟動并打開目標網頁,用于后續數據提取、交互操作。
(二)execute_script()
?方法打開多標簽頁
該方法通過執行 JavaScript 腳本,在同一瀏覽器打開多個標簽頁,格式:execute_script(script, *args)
?,script
?為 JavaScript 腳本字符串。示例:
from selenium import webdriver
from selenium.webdriver.edge.options import Options edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
# 先打開主頁面
driver.get('https://www.ptpress.com.cn/')
# 打開新標簽頁(人民郵電出版社登錄頁)
driver.execute_script("window.open('https://www.ptpress.com.cn/login','_blank');")
# 打開另一個新標簽頁(數藝社頁面 )
driver.execute_script("window.open('https://www.shuyishe.com/','_blank');")
借助 JavaScript 的?window.open
?方法,實現多標簽頁批量打開,滿足復雜網頁跳轉需求。
五、獲取渲染后的網頁代碼
瀏覽器加載網頁并渲染后,用?page_source
?方法提取渲染后的完整代碼(含 JS 動態加載內容 ),示例:
from selenium import webdriver
from selenium.webdriver.edge.options import Options edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('https://www.ptpress.com.cn/')
# 獲取渲染后的網頁源代碼
rendered_html = driver.page_source
print(rendered_html)
page_source
?獲取的代碼,可用于正則表達式、XPath 等方式提取目標數據(如商品價格、新聞內容 )。
六、獲取和操作網頁元素
(一)獲取網頁中的指定元素
Selenium 提供多種元素定位方法(替代正則表達式篩選 ),常用如下:
find_element(By.ID, "id值")
:通過元素?id
?定位(頁面唯一 )。find_element(By.NAME, "name值")
:按?name
?屬性定位。find_element(By.XPATH, "XPath 表達式")
:靈活的路徑定位,適配復雜頁面。
示例(定位搜索框并輸入內容 ):
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('https://www.ptpress.com.cn/') # 用 XPath 定位搜索框(需替換為實際頁面 XPath )
search_box = driver.find_element(By.XPATH, '//input[@placeholder="搜索圖書、作者、ISBN"]')
# 輸入搜索關鍵詞(這里通過 input 交互,模擬用戶輸入 )
a = input("請輸入搜索關鍵詞:")
search_box.send_keys(a)
通過?find_element
?系列方法,精準定位元素后,可執行輸入、點擊等交互操作。
(二)獲取多個元素與批量操作
find_elements()
?方法(注意復數 )可獲取頁面中匹配條件的多個元素,示例(提取頁面中所有圖書封面圖片元素 ):
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('https://www.ptpress.com.cn/search?keyword=python') # 定位所有圖書封面圖片元素(假設用 XPath 匹配 )
book_covers = driver.find_elements(By.XPATH, '//img[@class="book-cover"]')
for cover in book_covers: # 可獲取元素屬性(如 src )或執行點擊等操作print(cover.get_attribute('src'))
遍歷獲取的元素列表,能批量提取信息(如圖片鏈接 )或執行交互,提升自動化效率。
以上是 Selenium 庫驅動瀏覽器的核心流程與操作!后續還會深入講解元素高級交互、自動化測試框架集成等更多實戰內容,關注我,帶你玩轉瀏覽器自動化 ~