Python實(shí)現(xiàn)自動化網(wǎng)頁操作步驟
1 準(zhǔn)備
推薦使用Chrome瀏覽器
1.1 安裝selenium程序包
激活虛擬環(huán)境,打開新的Terminal,輸入以下代碼:
python -m pip install selenium
如下圖所示,表示安裝成功,版本為4.7.2
關(guān)閉虛擬環(huán)境,打開新的Terminal
1.2 引入函數(shù)模塊
#引入time模塊,實(shí)現(xiàn)延時(shí) import time #引入selenium庫中的webdriver模塊,實(shí)現(xiàn)對網(wǎng)頁的操作 from selenium import webdriver #引入By Class,輔助元素定位 from selenium.webdriver.common.by import By #引入ActionChains Class,輔助鼠標(biāo)移動 from selenium.webdriver.common.action_chains import ActionChains
2 實(shí)現(xiàn)
2.1 打開網(wǎng)頁
#打開谷歌瀏覽器 driver = webdriver.Chrome() #打開網(wǎng)頁 driver.get('URL') #將URL替換為需要操作的網(wǎng)址
2.2 元素定位
要想實(shí)現(xiàn)對網(wǎng)頁的控制,需要首先定位網(wǎng)頁上的元素,一般為搜索框、選項(xiàng)、按鈕等。
selenium 4.0以上的版本更新了元素定位方式,要用到find_element函數(shù),用法舉例如下:
el = driver.find_element(By.NAME, "*")
首先要獲取元素的信息:
打開網(wǎng)頁后,按F12,打開元素審查窗口
點(diǎn)擊窗口中紅框標(biāo)出的圖標(biāo),即可在頁面上選擇需要定位的元素,查看其代碼。
一般需要定位的元素代碼都以input
開頭,下圖為搜索框的代碼,從代碼中可以提取定位元素所需要的信息:
根據(jù)下列信息均可以定位元素,但要保證根據(jù)該信息可以唯一定位到該元素:
By. | * |
---|---|
NAME | name=“*” |
CLASS_NAME | class_name=“*” |
ID | id=“*” |
TAG_NAME | tag_name=“*” |
LINK_TEXT | |
PARTIAL_LINK_TEXT | |
CSS_SELECTOR | |
XPATH | Copy full XPath |
如果根據(jù)其他信息無法唯一定位該元素,可以采取XPath定位,XPath的獲取方式比較特殊,需要右鍵單擊該代碼行,在下拉列表中選擇Copy full XPath,如下圖所示:
2.3 元素控制
定位到元素后,可以進(jìn)行下列操作,實(shí)現(xiàn)對元素的控制:
method | 功能 |
---|---|
click() | 點(diǎn)擊 |
send_keys(‘*’) | 輸入 |
clear() | 清空 |
以輸入文字為例,代碼如下(*為需要輸入的文字):
el.send_keys('*')
如果打開網(wǎng)頁時(shí),需要控制的元素不在可視范圍內(nèi),需要滑動鼠標(biāo)定位,則要借助于ActionChains,否則可能會報(bào)錯:找不到該元素。
ActionChains(driver).move_to_element(el).click().perform() el.click()
上述示例為點(diǎn)擊操作,其中第二行最好加上,確保點(diǎn)到該元素
另外一種找不到元素的原因可能是網(wǎng)頁還沒有加載完畢,此時(shí)就可以借助于延時(shí)功能:
time.sleep(1)
2.4 彈出框的處理
如果點(diǎn)擊按鈕后,不是打開一個(gè)新的頁面,而是彈出了一個(gè)窗口,需要在新的窗口中操作,則需要通過如下代碼轉(zhuǎn)到新的frame下,否則可能會報(bào)錯:找不到該元素。
driver.switch_to.frame(0)
隨后繼續(xù)按2.2定位元素即可。
到此這篇關(guān)于Python實(shí)現(xiàn)自動化網(wǎng)頁操作步驟的文章就介紹到這了,更多相關(guān)Python 自動化網(wǎng)頁操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
langchain中的chat?models介紹和使用實(shí)例
這篇文章主要介紹了langchain中的chat?models介紹和使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11python+elasticsearch實(shí)現(xiàn)標(biāo)簽匹配計(jì)數(shù)操作
這篇文章主要介紹了python+elasticsearch實(shí)現(xiàn)標(biāo)簽匹配計(jì)數(shù)操作,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04Python實(shí)現(xiàn)定時(shí)精度可調(diào)節(jié)的定時(shí)器
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)定時(shí)精度可調(diào)節(jié)的定時(shí)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04python如何利用cv2.rectangle()繪制矩形框
cv2.rectangle這個(gè)函數(shù)的作用是在圖像上繪制一個(gè)簡單的矩形,下面這篇文章主要給大家介紹了關(guān)于python如何利用cv2.rectangle()繪制矩形框的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12Python Pydantic進(jìn)行數(shù)據(jù)驗(yàn)證的方法詳解
在 Python 中,有許多庫可用于數(shù)據(jù)驗(yàn)證和處理,其中一個(gè)流行的選擇是 Pydantic,下面就跟隨小編一起學(xué)習(xí)一下Pydantic 的基本概念和用法吧2024-01-01