最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

selenium常用API的使用過程記錄(包括自動登錄)

 更新時間:2024年02月24日 10:51:47   投稿:yin  
selenium是一個自動測試工具,它可以幫我通過代碼去實(shí)現(xiàn)驅(qū)動瀏覽器自動執(zhí)行相應(yīng)的操作,所以我們也可以用它來做爬蟲,主要使用selenium的目的是為了跳過登錄驗(yàn)證,這篇文章主要介紹了selenium的使用過程記錄,已經(jīng)常用API接口(包括自動登錄)

什么是Selenium

Selenium是一個自動化測試工具,對各種瀏覽器都能很好地支持,包括Chrome、Firefox這些主流瀏覽器。使用它就可以模擬瀏覽器進(jìn)行各種各樣的操作,包括爬取一些網(wǎng)頁內(nèi)容。當(dāng)你看到瀏覽器自己運(yùn)行并且在網(wǎng)頁上翻頁或者跳轉(zhuǎn)的時候,應(yīng)該會覺得很有趣的。
安裝selenium先安裝好Selenium庫和對應(yīng)瀏覽器的WebDriver驅(qū)動,比如我用的是Chrome,則相對應(yīng)安裝的是ChromeDriver。
1.安裝selenium # 打開命令控制符執(zhí)行 pip install selenium
2.我的Google Chrome 已是最新版本版本 74.0.3729.108(正式版本) (64 位)
安裝三大瀏覽器驅(qū)動driver
1.chromedriver 下載地址:http://chromedriver.storage.googleapis.com/index.html?path=74.0.3729.6/
2.Firefox的驅(qū)動geckodriver 下載地址:https://github.com/mozilla/geckodriver/releases/
3.IE的驅(qū)動IEdriver 下載地址:http://www.nuget.org/packages/Selenium.WebDriver.IEDriver/
注意:64位向下兼容,直接下載32位的就可以啦,親測可用。chromedriver_win32.zip
D:\Python\python\Scripts
.粘貼chromedriver.exe到文件d:\Python37\Scripts路徑下。
如果Chrome問題閃退 ,不兼容問題!

為什么要使用selenium?

selenium是一個自動測試工具,它可以幫我通過代碼去實(shí)現(xiàn)驅(qū)動瀏覽器自動執(zhí)行相應(yīng)的操作。所以我們也可以用它來做爬蟲。主要使用selenium的目的是為了跳過登錄驗(yàn)證。

Python的selenium爬蟲的簡單使用過程記錄

0.預(yù)先準(zhǔn)備
~首先下載谷歌瀏覽器,然后點(diǎn)擊設(shè)置選項(xiàng)那里的幫助—關(guān)于Google Chrome,點(diǎn)進(jìn)去看瀏覽器的版本號,或者在谷歌瀏覽器輸入chrome://version/ 進(jìn)行查看;
~然后下載驅(qū)動,驅(qū)動地址:http://chromedriver.storage.googleapis.com/index.html
~將驅(qū)動chromedriver.exe所在的文件夾的路徑添加到電腦的環(huán)境變量中,或者直接放在py文件運(yùn)行的目錄下

1.導(dǎo)入selenium 庫

from selenium import webdriver

2.設(shè)置參數(shù)

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('prefs', {'profile.default_content_setting_values': {'images': 2, }})  # 設(shè)置瀏覽器無圖片模式
chrome_options.add_argument(f'--proxy-server=200.200.200.52:8888')  #設(shè)置代理ip,這個是我隨便寫的ip

3.實(shí)例化

chrome = webdriver.Chrome(options=chrome_options)  # 創(chuàng)建selenium實(shí)例化

4.輸入網(wǎng)址

chrome.get('https://www.baidu.com/')

5.定位元素

chrome.find_element_by_xpath('//*[@id="kw"]')   #定位好元素,主要是卻定要做什么,這一步可以不要
chrome.find_element_by_xpath('//*[@id="kw"]') .send_keys('白某人')   #send_keys 主要是用來在輸入框輸入內(nèi)容
chrome.find_element_by_link_text('百度一下').click()  # click 方法是點(diǎn)擊
#定位元素的方法有很多,但是要注意點(diǎn)的是find_element  后面有沒有s,有s的話是返回一個列表的

6.關(guān)閉瀏覽器

chrome.close()

常用API

初始化WebDriver

首先,我們需要創(chuàng)建一個WebDriver實(shí)例,它是與瀏覽器進(jìn)行交互的主要接口。

from selenium import webdriver
driver = webdriver.Chrome('/path/to/chromedriver')  # 若已設(shè)置環(huán)境變量,可省略路徑

打開和關(guān)閉網(wǎng)頁

driver.get('https://www.example.com')  # 打開網(wǎng)頁
print(driver.title)                     # 獲取網(wǎng)頁標(biāo)題
driver.quit()                           # 關(guān)閉瀏覽器并退出WebDriver會話

查找元素

在網(wǎng)頁中查找元素是自動化過程的基礎(chǔ)。

from selenium.webdriver.common.by import By
element_by_id = driver.find_element(By.ID, 'some-id')
element_by_name = driver.find_element(By.NAME, 'some-name')
element_by_xpath = driver.find_element(By.XPATH, '//div[@class="some-class"]')
element_by_css = driver.find_element(By.CSS_SELECTOR, 'div.some-class')

與元素進(jìn)行交互

找到元素后,我們可以與它進(jìn)行各種交互,如點(diǎn)擊、輸入文本等。

# 輸入文本
search_box = driver.find_element(By.NAME, 'q')
search_box.send_keys('Selenium')
# 點(diǎn)擊按鈕
search_button = driver.find_element(By.NAME, 'btnK')
search_button.click()
# 清空文本框
search_box.clear()

等待元素

Web自動化中,等待某個條件的成立是常見需求,以確保元素已加載。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 顯示等待
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'some-id'))
)
# 隱式等待
driver.implicitly_wait(10)  # 設(shè)置全局等待時間

處理下拉菜單

下拉菜單是表單常見元素,Selenium提供了Select類來處理它們。

from selenium.webdriver.support.ui import Select
select_element = driver.find_element(By.ID, 'dropdown')
select_object = Select(select_element)
select_object.select_by_index(1)        # 通過索引選擇
select_object.select_by_value('value')  # 通過value屬性選擇
select_object.select_by_visible_text('Text')  # 通過可見文本選擇

執(zhí)行JavaScript

有時直接使用JavaScript執(zhí)行操作是必要的。

driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')  # 滾動到底部

處理Alerts、Frames和Windows

Selenium可以處理JavaScript彈窗、iFrames和新窗口。

# 處理Alert彈窗
alert = driver.switch_to.alert
alert_text = alert.text
alert.accept()  # 點(diǎn)擊'OK'
# 切換到iFrame
driver.switch_to.frame('frameName')
# 切換回主文檔
driver.switch_to.default_content()
# 切換窗口
driver.switch_to.window(driver.window_handles[1])

獲取屬性和CSS屬性

有時我們需要獲取元素的屬性或者CSS屬性。

attr_value = element.get_attribute('href')
css_value = element.value_of_css_property('color')

利用Selenium進(jìn)行自動登錄

以下是一個利用Selenium進(jìn)行自動登錄的例子。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome('/path/to/chromedriver')
driver.get('https://www.somewebsite.com/login')
# 填寫用戶名和密碼
username = driver.find_element(By.ID, 'username')
password = driver.find_element(By.ID, 'password')
username.send_keys('your_username')
password.send_keys('your_password')
# 點(diǎn)擊登錄
login_button = driver.find_element(By.ID, 'submit')
login_button.click()
# 等待登錄成功的頁面元素加載
wait = WebDriverWait(driver, 10)
logged_in_element = wait.until(EC.presence_of_element_located((By.ID, 'logged-in-message')))
print('登錄成功!')
# 執(zhí)行后續(xù)的自動化操作...
# 關(guān)閉瀏覽器
driver.quit()

在這個例子中,我們自動化了登錄過程,包括填寫認(rèn)證信息和提交表單,然后等待登錄成功消息的出現(xiàn)。

總結(jié)

Selenium是Python爬蟲和自動化測試領(lǐng)域的強(qiáng)大工具。本篇博客中我們介紹了Selenium的常用API,這些API能幫助你模擬幾乎所有的瀏覽器操作,從而使你能夠構(gòu)建出功能強(qiáng)大的自動化腳本。掌握這些API是提高爬蟲效率和應(yīng)對復(fù)雜頁面的關(guān)鍵。

相關(guān)文章

  • Python中元組解構(gòu)的技巧詳解

    Python中元組解構(gòu)的技巧詳解

    在Python中,元組(tuple)是一種常用的數(shù)據(jù)結(jié)構(gòu),元組的解構(gòu)是一項(xiàng)強(qiáng)大的特性,快速、方便地將元組中的值分配給多個變量,下面我們就來學(xué)習(xí)一下Python中元組解構(gòu)的技巧吧
    2024-01-01
  • 使用PyOpenGL繪制三維坐標(biāo)系實(shí)例

    使用PyOpenGL繪制三維坐標(biāo)系實(shí)例

    今天小編就為大家分享一篇使用PyOpenGL繪制三維坐標(biāo)系實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python批量實(shí)現(xiàn)PDF轉(zhuǎn)換為圖片(JPG/PNG)

    Python批量實(shí)現(xiàn)PDF轉(zhuǎn)換為圖片(JPG/PNG)

    本文介紹了如何使用?Python?腳本快速地將?Word?文檔轉(zhuǎn)換為?PDF?文件,并將?PDF?文件轉(zhuǎn)換為?PNG?圖片,該腳本基于?PyMuPDF、pdf2image?和?win32com?庫實(shí)現(xiàn),感興趣的小伙伴可以了解下
    2026-03-03
  • Python Logging 日志記錄入門學(xué)習(xí)

    Python Logging 日志記錄入門學(xué)習(xí)

    這篇文章主要介紹了Python Logging 日志記錄入門學(xué)習(xí),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • python實(shí)現(xiàn)比較類的兩個instance(對象)是否相等的方法分析

    python實(shí)現(xiàn)比較類的兩個instance(對象)是否相等的方法分析

    這篇文章主要介紹了python實(shí)現(xiàn)比較類的兩個instance(對象)是否相等的方法,結(jié)合實(shí)例形式分析了Python判斷類的實(shí)例是否相等的判斷操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-06-06
  • 一篇文章講解用VScode寫Python怎么運(yùn)行

    一篇文章講解用VScode寫Python怎么運(yùn)行

    這篇文章主要介紹了如何在Visual?Studio?Code(VSCode)中編寫和運(yùn)行Python代碼,包括安裝VSCode、安裝Python插件、配置Python環(huán)境、創(chuàng)建和運(yùn)行Python文件、調(diào)試Python代碼、代碼格式化、代碼片段、Git集成以及單元測試等,需要的朋友可以參考下
    2024-12-12
  • Python attrs提高面向?qū)ο缶幊绦试敿?xì)

    Python attrs提高面向?qū)ο缶幊绦试敿?xì)

    Python是面向?qū)ο蟮恼Z言,一般情況下使用面向?qū)ο缶幊虝沟瞄_發(fā)效率更高,軟件質(zhì)量更好,并且代碼更易于擴(kuò)展,可讀性和可維護(hù)性也更高,但是Python的類寫起來是真的累,這是可以在創(chuàng)建類的時候自動添加上attrs模塊,下面文章我們就來介紹這個東西,需要的朋友可參考一下
    2021-09-09
  • Python字體反爬實(shí)戰(zhàn)案例分享

    Python字體反爬實(shí)戰(zhàn)案例分享

    這篇文章主要介紹了Python字體反爬實(shí)戰(zhàn)案例分享,文章基于python的相關(guān)資料利用實(shí)習(xí)?x站點(diǎn)實(shí)戰(zhàn)案例,具有一定的的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • 詳解Python如何精確控制asyncio并發(fā)運(yùn)行多個任務(wù)

    詳解Python如何精確控制asyncio并發(fā)運(yùn)行多個任務(wù)

    這篇文章主要為大家詳細(xì)介紹了Python如何精確控制asyncio并發(fā)運(yùn)行多個任務(wù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • python 浮點(diǎn)數(shù)四舍五入需要注意的地方

    python 浮點(diǎn)數(shù)四舍五入需要注意的地方

    這篇文章主要介紹了python 四舍五入需要注意的地方,幫助大家避免一些不必要的坑,感興趣的朋友可以了解下
    2020-08-08

最新評論

洛阳市| 南丰县| 萨嘎县| 罗平县| 巴塘县| 宁国市| 东台市| 孟津县| 黄骅市| 江城| 永安市| 乐平市| 奉贤区| 乌拉特前旗| 佛冈县| 隆安县| 鲜城| 东安县| 兴化市| 长寿区| 卢氏县| 宁城县| 安康市| 青阳县| 司法| 新竹县| 东辽县| 华安县| 凭祥市| 剑川县| 元氏县| 汉中市| 河津市| 金秀| 延寿县| 乌苏市| 阳泉市| 岗巴县| 阳曲县| 中卫市| 社旗县|