標題 “Python 網絡爬蟲 —— selenium庫驅動瀏覽器

一、Selenium 庫核心認知

Selenium 庫是 Web 應用程序測試與自動化操作的利器 ,能驅動瀏覽器(如 Edge、Firefox 等)執行點擊、輸入、打開、驗證等操作?。與 Requests 庫差異顯著:Requests 庫僅能獲取網頁原始代碼,而 Selenium 基于瀏覽器驅動程序工作,瀏覽器可渲染網頁源代碼,借此能輕松拿到渲染后的數據信息(如 JS 動態加載內容 ),完美解決 Requests 庫無法處理的動態頁面數據提取難題。

二、使用 Selenium 庫前的準備

(一)安裝 WebDriver

瀏覽器依托內核(如 Edge 瀏覽器基于 Chromium 內核 )運行,Selenium 驅動瀏覽器需對應內核的 WebDriver 。以 Edge 瀏覽器為例:

  1. 確定瀏覽器內核版本:打開 Edge 瀏覽器,在設置 - 關于 Microsoft Edge 中查看版本。
  2. 下載匹配的 EdgeDriver:訪問微軟官方 EdgeDriver 下載頁(Microsoft Edge WebDriver | Microsoft Edge Developer?),選擇與瀏覽器版本適配的 EdgeDriver(版本盡量貼近 )。
  3. 配置驅動程序:解壓下載的 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 庫驅動瀏覽器的核心流程與操作!后續還會深入講解元素高級交互、自動化測試框架集成等更多實戰內容,關注我,帶你玩轉瀏覽器自動化 ~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92203.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92203.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92203.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從實踐出發--探究C/C++空類的大小,真的是1嗎?

文章目錄測試代碼VS2022正常運行編譯失敗GCC總結Author: NemaleSu Data: 2025/07/21 測試環境: Win11:VS2022Ubuntu22.04:gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 相信眾多cpper聽過太多書籍、視頻、文檔、博客等資料,說C/C…

數據結構自學Day11-- 排序算法

一、排序算法的概念排序(Sorting)是指:將一組“無序”的數據,按照某種“順序規則”排列成“有序”的過程。1、按排序順序分類:升序:從小到大排列,如 1, 3, 5, 7, 9降序:從大到小排列…

電子元器件—三極管(一篇文章搞懂電路中的三極管)(筆記)(面試考試必備知識點)

三極管的定義及工作原理1. 定義三極管(Transistor)是一種具有三層半導體材料(P-N-P 或 N-P-N)構成的半導體器件,用于信號放大、開關控制和信號調制等應用。三極管有三個引腳:發射極(Emitter&…

數據結構之克魯斯卡爾算法

前言:和Prim算法一樣,Kruskal 算法也是用來生成最小生成樹的,這篇文章來學習一下Kruskal算法的實現 一、實現流程 初始化的時候,將所有的邊用一個數組存儲,并且按權值從小到大進行排序,每次選一個權值最小的…

MongoDB 查詢時區問題

MongoDB默認時區是UTC&#xff0c;比北京時區晚八小時&#xff0c;北京時間UTC8h。 // 北京時間的 2024-10-01 08:00:00 // (>) 大于 - $gt // (<) 小于 - $lt // (>) 大于等于 - $gte // (< ) 小于等于 - $lte// Z代表UTC時區1、{"gmtCreate":{"$…

Windows VS2019 編譯 Apache Thrift 0.15.0

隨著微服務架構的普及,高效的跨語言遠程過程調用(RPC) 成為了構建分布式系統的重要基礎。Apache Thrift 是 Facebook 開源的一個輕量級、高性能的 RPC 框架,它允許開發者通過一個通用的接口定義語言(IDL)來定義服務接口和數據結構,并自動生成多種語言的客戶端和服務端代…

搭建種草商城框架指南

一、引言在當今電商市場&#xff0c;種草商城以其獨特的社交化購物模式受到越來越多用戶的喜愛。搭建一個功能完善、體驗良好的種草商城框架&#xff0c;需要綜合考慮前端界面、后端服務、數據庫設計等多個方面。本文將為你詳細介紹搭建種草商城框架的關鍵要點和技術選型。二、…

docker--掛載

設置容器的掛載 需要注意 掛載行為會覆蓋容器目標目錄的原有內容(未驗證)。 查看容器的掛載情況 在容器外部查看: docker inspect <容器名或容器ID> | grep -A n "Mounts" -A n 的含義 -A 是 --after-context 的縮寫,表示顯示匹配行及其后 n 行。 "Mo…

以Streamable HTTP方式訪問mcp server的過程

一、mcp server 部署 使用fastmcp框架 部署 mcp server&#xff0c; 以下是源代碼 # 引入 fastmcp 依賴包 from fastmcp import FastMCP# 新建fastmcp實例&#xff0c; 名字叫做 weather mcp FastMCP("weather")mcp.tool(name"weather", tags{"weath…

二次元 IP 虛擬數字人宣傳:漫畫角色動態直播與衍生周邊預售聯動

當漫畫角色從靜態畫稿中走出&#xff0c;以動態直播的形式與粉絲實時互動&#xff0c;再順勢開啟衍生周邊預售 —— 虛擬數字人技術正重塑二次元 IP 的宣傳邏輯。這種 “動態直播 周邊預售” 的聯動模式&#xff0c;不僅打破了次元壁&#xff0c;更讓 IP 熱度高效轉化為商業價…

如何在服務器上獲取Linux目錄大小

目前我在管理一臺hostease的服務器時遇到服務器磁盤空間不足的情況。隨著在系統中添加更多文件&#xff0c;這些系統文件目錄也變得越來越大。過大的目錄也消耗了系統資源&#xff0c;導致系統運行緩慢。后來我通過下列的方法對服務器上的磁盤空間使用進行了逐一檢查。在這篇綜…

來伊份養饞記社區零售 4.0 上海首店落滬:重構 “家門口” 的生活服務生態

7 月 19 日&#xff0c;來伊份與養饞記戰略合作的首個 “社區零售 4.0” 門店在上海松江泗涇鎮泗寶路正式開業。這不僅是雙方自今年 1 月達成戰略合作后的實質性落地&#xff0c;更是 3 月 “社區生活新生態” 構想的首次規模化實踐&#xff0c;標志著零食行業巨頭與社區零售新…

從C++開始的編程生活(3)——引用類型、內聯inline和nullptr

前言 本系列文章承接C語言的學習&#xff0c;需要有C語言的基礎才能學會哦~ 第3篇主要講的是有關于C的引用類型、內聯inline和nullptr。 C才起步&#xff0c;都很簡單呢&#xff01; 目錄 前言 引用類型 基本語法 特性 應用 const引用 基本語法 引用與指針的關系 內聯…

makefile-- 其他函數

fuctionsjoin?$(join <list1>,<list2>)連接函數把list2 中單詞對應的添加到list1 的后面若list1 的單詞個數> list2 &#xff0c;多出的list1 保持不變若list2 的單詞個數> list21&#xff0c;多出的list2 添加到list1 后面foreach?$(foreach <var>…

【unity實戰】使用unity的Navigation+LineRenderer實現一個3D人物尋路提前指示預測移動軌跡的效果,并可以適配不同的地形

文章目錄 前言 實戰 1、實現要點 1.1 NavMesh.CalculatePath方法計算兩個點之間的導航路徑 1.2 尋找投射的地面點 2、代碼實現如下 3、烘培地面導航網格 4、添加導航玩家代理,并掛載前面的腳本 5、創建Line Renderer,并放在角色下面作為子物體 6、運行游戲查看效果 專欄推薦 …

寶塔申請證書錯誤,提示 module ‘OpenSSL.crypto‘ has no attribute ‘sign‘

遇到"module OpenSSL.crypto has no attribute sign"錯誤時&#xff0c;通常是由于pyOpenSSL版本兼容性問題導致的?。以下是解決方案&#xff1a;通過SSH連接到服務器&#xff0c;執行以下命令安裝指定版本的pyOpenSSL&#xff1a;btpip install pyOpenSSL24.2.1-U然…

【ffmpeg源碼學習】詳解pkg-config的作用

文章目錄 前言 一、什么是pkg-config? 二、為什么需要 pkg-config? 三、pkg-config 的工作原理 3.1 .pc 文件 3.2 查詢流程 3.3 查找路徑 四、pkg-config 在 FFmpeg 中的作用 五、pkg-config 的常用命令 六、在項目中的實際用法 6.1 makefile示例: 6.2 cmake示例: 6.3 gcc命…

PHPStorm攜手ThinkPHP8:開啟高效開發之旅

目錄一、前期準備1.1 開發環境搭建1.2 配置 Xdebug二、PHPStorm 集成 ThinkPHP82.1 導入 ThinkPHP8 項目2.2 配置 PHP 解釋器2.3 配置服務器三、ThinkPHP8 項目開發基礎3.1 項目結構剖析3.2 控制器與方法創建3.3 視圖渲染與數據傳遞四、數據庫操作與模型定義4.1 數據庫配置4.2 …

HTTP性能優化實戰技術詳解(2025)

HTTP性能優化實戰技術詳解本文基于提供的文章大綱&#xff0c;對HTTP性能優化進行擴展說明。文章結構清晰&#xff0c;從理解瓶頸到具體優化策略&#xff0c;再到監控與高級技巧&#xff0c;逐步展開。每個部分包括背景介紹、核心原理、實施步驟、示例或工具推薦&#xff0c;確…

探索文件系統:軟硬鏈接的奧秘

目錄 1.文件系統 1.1 磁盤物理存儲結構 1.2 磁盤邏輯存儲結構 1.3 inode編號 2. 軟硬鏈接 2.1 軟鏈接 2.2 硬鏈接 2.3 目錄文件的軟硬鏈接 1.文件系統 在一臺電腦中&#xff0c;大部分文件都不是被打開的&#xff0c;這些文件都在磁盤中進行保存。已經打開的文件需要管…