Python自動化實戰之使用Selenium進行Web自動化詳解


概要

為了完成一項重復的任務,你需要在網站上進行大量的點擊和操作,每次都要浪費大量的時間和精力。Python的Selenium庫就可以自動化完成這些任務。

在本篇文章中,我們將會介紹如何使用Python的Selenium庫進行Web自動化,以及如何將它應用于實際項目中。如果你是一名Python愛好者或者正在尋找一種方法來提高工作效率,那么這篇文章將會對你有所幫助。


什么是Selenium?

Selenium是一個自動化測試工具,它可以模擬用戶在瀏覽器中的操作,比如點擊、輸入、選擇等等。它支持多種瀏覽器,包括Chrome、Firefox、Safari等等,并且可以在多個平臺上運行。

安裝和配置Selenium

在使用Selenium之前,需要安裝Selenium和相應的瀏覽器驅動程序。這里我們以Chrome瀏覽器為例,介紹如何安裝和配置Selenium。

首先,我們需要安裝Selenium庫。可以通過以下命令來安裝:

pip?install?selenium

接下來,我們需要下載Chrome瀏覽器驅動程序。可以從ChromeDriver官網 ↗上下載適合自己的版本。下載完成后,將驅動程序所在的路徑添加到環境變量中。

from?selenium?import?webdriver#?指定驅動程序所在路徑
driver_path?=?'/path/to/chromedriver'#?創建Chrome瀏覽器實例
browser?=?webdriver.Chrome(executable_path=driver_path)#?打開網頁
browser.get("https://www.baidu.com")

上面的代碼中,我們首先導入了webdriver模塊,并指定了Chrome瀏覽器驅動程序所在的路徑。接下來,我們創建了一個Chrome瀏覽器實例,并打開了百度首頁。

模擬用戶操作

接下來,我們將介紹如何使用Selenium模擬用戶在瀏覽器中的操作。比如,我們可以使用Selenium來自動登錄某個網站,或者自動填寫表單等等。

點擊元素

要點擊一個元素,可以使用click()方法。比如,我們可以點擊一個鏈接:

#?點擊百度首頁的新聞鏈接
news_link?=?browser.find_element_by_link_text("新聞")
news_link.click()

上面的代碼中,我們首先找到了百度首頁中的新聞鏈接,然后使用click()方法來點擊它。

輸入文本

要輸入文本,可以使用send_keys()方法。比如,我們可以在搜索框中輸入關鍵字:

#?在百度搜索框中輸入關鍵字
search_box?=?browser.find_element_by_id("kw")
search_box.send_keys("Python")

上面的代碼中,我們首先找到了百度搜索框,然后使用send_keys()方法來輸入關鍵字。

選擇元素

有時候,我們需要從下拉列表或者單選框中選擇一個選項。可以使用select()方法來實現這個功能。比如,我們可以選擇一個下拉列表中的選項:

from?selenium.webdriver.support.ui?import?Select#?選擇一個下拉列表中的選項
select?=?Select(browser.find_element_by_name("select"))
select.select_by_value("value")

上面的代碼中,我們首先找到了一個下拉列表,然后創建了一個Select對象。接下來,我們使用select_by_value()方法來選擇一個選項。

等待元素

有時候,我們需要等待某個元素出現再進行操作。可以使用WebDriverWait類來實現這個功能。比如,我們可以等待一個元素出現后再點擊它:

from?selenium.webdriver.common.by?import?By
from?selenium.webdriver.support.ui?import?WebDriverWait
from?selenium.webdriver.support?import?expected_conditions?as?EC#?等待一個元素出現后再點擊它
element?=?WebDriverWait(browser,?10).until(EC.presence_of_element_located((By.ID,?"element_id"))
)
element.click()

上面的代碼中,我們使用WebDriverWait類來等待一個元素的出現,然后使用click()方法來點擊它。

實戰應用

在實際項目中,我們可以使用Selenium來完成一些重復性的任務,比如自動化測試、數據采集等等。下面,我們將介紹如何使用Selenium來爬取某個網站的數據。

分析網站結構

在爬取網站數據之前,我們需要先了解網站的結構。比如,我們可以使用Chrome瀏覽器的開發者工具來查看網站的HTML代碼和CSS樣式。

爬取數據

假設我們要爬取某個電商網站的商品數據,包括商品名稱、價格、銷量等等。我們可以通過以下步驟來實現:

  1. 打開網站,并搜索關鍵字;

  2. 獲取搜索結果頁面中的商品列表;

  3. 遍歷商品列表,獲取每個商品的名稱、價格、銷量等信息;

  4. 將商品信息保存到文件中。

下面是代碼示例:

#?打開網站,并搜索關鍵字
browser.get("https://www.example.com/")
search_box?=?browser.find_element_by_id("search_box")
search_box.send_keys("Python")
search_button?=?browser.find_element_by_id("search_button")
search_button.click()#?獲取搜索結果頁面中的商品列表
product_list?=?browser.find_elements_by_class_name("product")#?遍歷商品列表,獲取每個商品的名稱、價格、銷量等信息
for?product?in?product_list:name?=?product.find_element_by_class_name("name").textprice?=?product.find_element_by_class_name("price").textsales?=?product.find_element_by_class_name("sales").text#?將商品信息保存到文件中with?open("products.txt",?"a")?as?f:f.write(f"{name}\t{price}\t{sales}\n")

上面的代碼中,我們首先打開了某個電商網站,并搜索了關鍵字。然后獲取搜索結果頁面中的商品列表,遍歷商品列表,獲取每個商品的名稱、價格、銷量等信息,并將商品信息保存到文件中。

技術總結

在本篇文章中,我們介紹了如何使用Python的Selenium庫進行Web自動化,并且演示了如何將它應用于實際項目中。如果你想要提高工作效率,或者想要學習如何進行自動化測試、數據采集等等,那么Selenium是一個非常好的選擇。

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

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

相關文章

Kubernetes網絡組件詳解

目錄 1、Kubernetes網絡組件 1.1、Flannel網絡組件 1.2、Calico 網絡插件 2、環境準備 2.1、主機初始化配置 2.2、部署docker環境 3、部署kubernetes集群 3.1、組件介紹 3.2、配置阿里云yum源 3.3、安裝kubelet kubeadm kubectl 3.4、配置init-config.yaml 3.5、安裝…

jenkinsfile自動部署接口

復制創建新流水線 從預先創建的job中獲取 config.xml 或根據需要創建另一個 curl -X GET http://xxx.xxx.xxxx.com/job/backup-data/config.xml -u test:xxxxxxxxxxxxxxxxxx-o config.xml 生成Crumb CRUMB$(curl -s http://xxxxxxx.xxx.xxx.com/crumbIssuer/api/xml?xpathc…

精彩回顧 | 迪捷軟件出席2023ATC汽車電子與軟件技術周

2023年8月18日,由ATC汽車技術會議主辦,上海市集成電路行業協會支持的“2023ATC汽車電子與軟件技術周”在上海市圓滿落幕。迪捷軟件上海參展之行圓滿收官。 ▲開幕式 本次峰會匯聚了整車廠、汽車零部件集團、軟硬件方案提供商、軟件工具供應商、軟件測試…

Ladp數據庫安裝和配置自定義schema ,Centos7環境

最近安裝ldap看了不少教程,整理下用到的有用的資料,并把自己的搭建過程分享。 參考 ldap介紹:openLDAP入門與安裝 官方文檔:https://www.openldap.org/doc/admin22/schema.html 安裝配置:Centos7 搭建openldap完整詳…

flask模型部署教程

搭建python flask服務的步驟 1、安裝相關的包 具體參考https://blog.csdn.net/weixin_42126327/article/details/127642279 1、安裝conda環境和相關包 # 一、安裝conda # 1、首先,前往Anaconda官網(https://www.anaconda.com/products/individual&am…

【K8S源碼之Pod漂移】整體概況分析 controller-manager 中的 nodelifecycle controller(Pod的驅逐)

參考 k8s 污點驅逐詳解-源碼分析 - 掘金 k8s驅逐篇(5)-kube-controller-manager驅逐 - 良凱爾 - 博客園 k8s驅逐篇(6)-kube-controller-manager驅逐-NodeLifecycleController源碼分析 - 良凱爾 - 博客園 k8s驅逐篇(7)-kube-controller-manager驅逐-taintManager源碼分析 - 良…

esp32C3 micropython oled 恐龍快跑游戲

目錄 簡介 效果展示 源代碼 main.py ssd1306.py 實現思路 血量值 分數 恐龍 障礙物 得分與血量值的計算 簡介 使用合宙esp32c3模塊,基于micropython平臺開發的一款oled小游戲,恐龍快跑,所有代碼已經給出,將兩個py文件…

【Maven教程】(一)入門介紹篇:Maven基礎概念與其他構建工具:理解構建過程與Maven的多重作用,以及與敏捷開發的關系 ~

Maven入門介紹篇 1?? 基礎概念1.1 構建1.2 maven對構建的支持1.3 Maven的其他作用 2?? 其他構建工具2.1 IDE2.2 Make2.3 Ant2.4 Jenkins 3?? Maven與敏捷開發🌾 總結 1?? 基礎概念 "Maven"可以翻譯為 “知識的積累者” 或 “專家”。這個詞源于波…

Qt應用開發(基礎篇)——MDI窗口 QMdiArea QMdiSubWindow

一、前言 QMdiArea類繼承于QAbstractScrollArea,QAbstractScrollArea繼承于QFrame,是Qt用來顯示MDI窗口的部件。 滾屏區域基類 QAbstractScrollAreahttps://blog.csdn.net/u014491932/article/details/132245486 框架類 QFramehttps://blog.csdn.net/u01…

面試算法編程題

面試算法編程題記錄 題目 : 羊圈里的狼 題目背景 : 一到了晚上,草原牧民的羊就會被趕進羊圈里。這時,野外的狼群就會打羊羔的主意。為了保護羊羔,牧民需要將羊圈里的狼趕走或殺死。由于來的狼很多,他需要快速甄別哪些狼在羊圈里面…

FANUC機器人加減速倍率指令ACC的使用方法說明

FANUC機器人加減速倍率指令ACC的使用方法說明 單位有一臺FANUC機器人(型號:M-900iB 360kg),偶爾會在啟動的瞬間會報SRVO-050碰撞檢測報警,而事實上機器人并沒有開始移動或和其他工件產生碰撞,一直查了很長時間,也沒有查到具體的原因,也嘗試過重新進行負載推算,但是偶爾…

恒運資本:CPO概念發力走高,兆龍互聯漲超10%,華是科技再創新高

CPO概念15日盤中發力走高,截至發稿,華是科技漲超15%再創新高,兆龍互聯漲逾11%,中貝通訊漲停,永鼎股份、太辰光漲超5%,天孚通訊漲逾4%。 消息面上,光通訊聞名咨詢機構LightCounting近日發布的202…

國產之光:訊飛星火最新大模型V2.0

大家好,我是herosunly。985院校碩士畢業,現擔任算法研究員一職,熱衷于機器學習算法研究與應用。曾獲得阿里云天池比賽第一名,CCF比賽第二名,科大訊飛比賽第三名。擁有多項發明專利。對機器學習和深度學習擁有自己獨到的…

每天一道leetcode:1466. 重新規劃路線(圖論中等廣度優先遍歷)

今日份題目: n 座城市,從 0 到 n-1 編號,其間共有 n-1 條路線。因此,要想在兩座不同城市之間旅行只有唯一一條路線可供選擇(路線網形成一顆樹)。去年,交通運輸部決定重新規劃路線,以…

OpenCV-Python中的圖像處理-視頻分析

OpenCV-Python中的圖像處理-視頻分析 視頻分析Meanshift算法Camshift算法光流Lucas-Kanade Optical FlowDense Optical Flow 視頻分析 學習使用 Meanshift 和 Camshift 算法在視頻中找到并跟蹤目標對象: Meanshift算法 Meanshift 算法的基本原理是和很簡單的。假設我們有一堆…

Failed to init API, possibly an invalid tessdata path: ./ ubuntu

1、問題描述 Failed to init API, possibly an invalid tessdata path: ./2、解決方案: 添加“TESSDATA_PREFIX”到系統環境變量中,值為testdata的父路徑(一般就是 Tesseract-OCR 的安裝路徑)亦可解決。在~/.bashrc中添加 expo…

【學習日記】【FreeRTOS】空閑任務與阻塞延時

寫在前面 本文是基于野火 RTOS 教程對空閑任務和阻塞延時的詳解。 一、什么是任務中的阻塞延時 說到阻塞延時,筆者的第一反應就是在單片機的 while 循環中,使用一個 for 循環不斷遞減一個大數,通過 CPU 不斷執行一條指令的耗時進行延時。這…

python優雅地爬蟲!

背景 我需要獲得新聞,然后tts,在每天上班的路上可以聽一下。具體的方案后期我也會做一次分享。先看我喜歡的萬能的老路:獲得html內容-> python的工具庫解析,獲得元素中的內容,完成。 好家伙,我知道我爬…

視頻云存儲/安防監控/視頻匯聚EasyCVR平臺新增設備經緯度選取

視頻云存儲/安防監控EasyCVR視頻匯聚平臺基于云邊端智能協同,支持海量視頻的輕量化接入與匯聚、轉碼與處理、全網智能分發、視頻集中存儲等。音視頻流媒體視頻平臺EasyCVR拓展性強,視頻能力豐富,具體可實現視頻監控直播、視頻輪播、視頻錄像、…

公網遠程連接Redis數據庫「內網穿透」

文章目錄 1. Linux(centos8)安裝redis數據庫2. 配置redis數據庫3. 內網穿透3.1 安裝cpolar內網穿透3.2 創建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一個固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址連接 前言 潔潔的個人主頁 我就問你有沒有發揮&#xff0…