selenium快速入門

一、操作瀏覽器

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By# 設置選項
q1 = Options()
q1.add_argument("--no-sandbox")
q1.add_experimental_option("detach", True)# 創建并啟動瀏覽器
a1 = webdriver.Chrome(service=Service(r"瀏覽器驅動的地址"), options=q1)# 使用瀏覽器打開指定的網頁
a1.get("http://baidu.com/")

二、元素定位

元素定位有兩個函數:find_element() 和 find_elements()

find_element():在網頁中找出首個符合指定條件的元素(找到的話返回結果,找不到的話報錯)

find_elements():在網頁中找出所有符合指定條件的元素(找到的話返回列表形式,找不到的話返回空列表)

1.ID

# 示例
a1.get("http://baidu.com/")
a1.find_element(By.ID, "kw").send_keys("nihao")

(1) 通過ID定位元素,一般比較準確

(2) 并不是所有網頁或者元素都有ID值

(3) send_keys()函數是在輸入框中輸入文字

2.NAME

# 示例
a1.get("http://baidu.com/")
a1.find_element(By.NAME, "wd").send_keys("nihao")

(1) 通過NAME定位元素,一般比較準確

(2) 并不是所有網頁或者元素都有NAME值

3.CLASS_NAME

# 示例1
a1.get("http://baidu.com/")
a1.find_element(By.CLASS_NAME, "s_ipt").send_keys("nihao")# 示例2
a1.get("https://bilibili.com/")
a1.find_elements(By.CLASS_NAME, "channel-icons__item")[1].click()

(1) class值不能有空格,否則會報錯

(2) class值重復的有很多,需要切片 console -> document.getElementsByClassName()

(3) class值有的網站是隨機的

4.TAG_NAME

# 示例
a1.get("https://baidu.com")
a1.find_elements(By.TAG_NAME, "input")[7].send_keys("tag")

(1) 查找<開頭標簽名字>

(2) 重復的標簽名字特別多,需要切片

5.LINK_TEXT

# 示例
a1.get("https://baidu.com/")
a1.find_element(By.LINK_TEXT, "新聞").click()

(1) 通過精確鏈接文本找到標簽a的元素

(2) 如果有重復的文本,則需要切片

6.PARTIA_LINK_TEXT

# 示例
a1.get("https://bilibili.com/")
a1.find_element(By.PARTIAL_LINK_TEXT, "音").click()

(1) 通過精確鏈接文本找到標簽a的元素[模糊文本定位]

(2) 如果有重復的文本,則需要切片

7.CSS_SELECTOR

# 示例
a1.get("https://baidu.com/")
# (1) #id = # + id -> 通過ID定位
a1.find_element(By.CSS_SELECTOR, "#kw").send_keys("css")
# (2) .class = . + class -> 通過CLASS定位
a1.find_element(By.CSS_SELECTOR, ".s_ipt").send_keys("css")
# (3) 不加修飾符 = 標簽頭 -> 通過TAG_NAME定位
a1.find_elements(By.CSS_SELECTOR, "input")[7].send_keys("css")
# (4) 通過任意類型定位:"[類型=‘精確值’]"
a1.find_element(By.CSS_SELECTOR, "[autocomplete='off']").send_keys("css")
# (5)?通過任意類型定位:"[類型*=‘模糊值’]"
a1.find_element(By.CSS_SELECTOR, "[autocomplete*='of']").send_keys("css")
# (6)?通過任意類型定位:"[類型^=‘開頭值’]"
a1.find_element(By.CSS_SELECTOR, "[autocomplete^='o']").send_keys("css")
# (7)?通過任意類型定位:"[類型$=‘結尾值’]"
a1.find_element(By.CSS_SELECTOR, "[autocomplete$='f']").send_keys("css")
# (8) 直接復制:Copy -> Copy selector
a1.find_element(By.CSS_SELECTOR, "#hotsearch-content-wrapper > li:nth-child(1) > a > span.title-content-title").click()

(1) #id = # + id -> 通過ID定位

(2) .class = . + class -> 通過CLASS定位

(3) 不加修飾符 = 標簽頭 -> 通過TAG_NAME定位

(4) 通過任意類型定位:"[類型=‘精確值’]"

(5)?通過任意類型定位:"[類型*=‘模糊值’]"

(6)?通過任意類型定位:"[類型^=‘開頭值’]"

(7)?通過任意類型定位:"[類型$=‘結尾值’]"

(8) 直接復制:Copy -> Copy selector

8.XPATH

# 示例
a1.get("https://baidu.com/")
# Copy -> Copy XPath
a1.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]').click()
# Copy -> Copy full XPath
a1.find_element(By.XPATH, '/html/body/div[1]/div[1]/div[3]/a[1]').click()

(1)?直接復制:Copy -> Copy XPath

(2)?直接復制:Copy -> Copy full XPath

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

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

相關文章

面試如何應用大模型

在面試中,如果被問及如何應用大模型,尤其是面向政務、國有企業或大型傳統企業的數字化轉型場景,你可以從以下幾個角度進行思考和回答: 1. 確定應用大模型的目標與痛點 首先,明確應用大模型的業務目標,并結合企業的實際需求分析可能面臨的痛點。這些企業通常會關注如何提…

嵌入式常見概念的介紹

目錄 一、MCU、MPU、ARM &#xff08;一&#xff09;MCU&#xff08;微控制器&#xff09; &#xff08;二&#xff09;MPU&#xff08;微處理器&#xff09; &#xff08;三&#xff09;ARM&#xff08;架構&#xff09; 二、DSP &#xff08;一&#xff09;數字信號處理…

深度強化學習(DRL)框架與多目標調度優化詳解

深度強化學習&#xff08;DRL&#xff09;框架與多目標調度優化詳解 &#xff08;截至2025年4月&#xff0c;結合最新研究進展&#xff09; 一、DRL主流框架及核心算法 通用DRL框架 Ray RLlib&#xff1a;支持分布式訓練&#xff0c;集成PPO、A3C、DQN等算法&#xff0c;適用于…

centos 安裝python3.9.9

這里寫自定義目錄標題 安裝編譯依賴 sudo yum -y groupinstall "Development Tools" sudo yum -y install openssl-devel bzip2-devel libffi-devel wget zlib-devel yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel …

【動態規劃】深入動態規劃:背包問題

文章目錄 前言01背包例題一、01背包二、分割等和子集三、目標和四、最后一塊石頭的重量|| 完全背包例題一、完全背包二、 零錢兌換三、零錢兌換||四、完全平方數 前言 什么是背包問題&#xff0c;怎么解決算法中的背包問題呢&#xff1f; 背包問題 (Knapsack problem) 是?種組…

Vue 接口請求 Nginx配置實時壓縮 速度起飛

生效之前 nginx配置如下 gzip on; gzip_min_length 1k; gzip_buffers 16 256k; gzip_http_version 1.1; gzip_comp_level 6; gzip_types application/json application/javascript text/javascript text/css text/plain; gzip_vary on; 生效之后 #user…

Mitosis:跨框架的UI組件解決方案

Mitosis 是一個開源工具&#xff0c;可以將 JSX 組件轉換為 Angular、React、Qwik、Vue、Svelte、Solid 和 React Native 等框架的功能齊全的組件。 Stars 數13019Forks 數593 主要特點 跨框架兼容性&#xff1a;Mitosis 允許開發者編寫一次組件&#xff0c;然后編譯成多個主流…

齊次坐標系統:什么是齊次坐標?為什么要引入齊次坐標?

齊次坐標系統&#xff1a;計算機圖形學的基礎 在計算機圖形學、計算機視覺、相機標定、三維建模等領域&#xff0c;齊次坐標是一個非常重要的數學工具。本文將介紹&#xff1a;齊次坐標的基本概念、數學原理、我們為什么要引入齊次坐標、及其在實際應用中的價值。 文章目錄 齊…

JS的大數運算(注意:原生的只支持整數計算!!!)

JS的大數運算&#xff08;注意&#xff1a;原生的只支持整數計算&#xff01;&#xff01;&#xff01;&#xff09; 一、JS的大數運算&#xff08;注意&#xff1a;原生的只支持整數計算&#xff01;&#xff01;&#xff01;&#xff09;1. 數字精度限制2. 大數解決方案2.1. …

Android 之美國關稅問題導致 GitHub 403 無法正常訪問,責任在誰?

這幾天各國關稅問題導致世界動蕩不安&#xff0c;如今GitHub又無法正常訪問&#xff0c;是不是Google到時候也無法正常使用了。

JAVA中正則表達式的入門與使用

JAVA中正則表達式的入門與使用 一&#xff0c;基礎概念 正則表達式&#xff08;Regex&#xff09; 用于匹配字符串中的特定模式&#xff0c;Java 中通過 java.util.regex 包實現&#xff0c;核心類為&#xff1a; Pattern&#xff1a;編譯后的正則表達式對象。 Matcher&#…

Prompt_Engineering提示詞工程(一)

一、Prompt&#xff08;提示詞&#xff09; Prompt&#xff08;提示詞&#xff09;是給AI模型交互文本片段&#xff0c;用于指導模型生成符合預期輸出結果&#xff0c;提示詞的目的是為模型提供一個上下文的任務&#xff0c;以便模型能夠更準確地理解用戶的意圖&#xff0c;并…

【設計模式】面向對象開發學習OOPC

PLOOC-裸機思維 PLOOC-git OOPC精要——撩開“對象”的神秘面紗 C/C面向對象編程之封裝-KK 面向過程&#xff0c;本質是“順序&#xff0c;循環&#xff0c;分支”面向對象&#xff0c;本質是“繼承&#xff0c;封裝&#xff0c;多態”參考的書籍&#xff1a;《UMLOOPC嵌入式…

軟考高級--案例分析

架構風格 重點 交互方式數據結構控制結構擴展方法 分類 管道-過濾器風格 數據流 數據倉儲風格 星型結構以數據為中心&#xff0c;其他構件圍繞數據進行交互 企業服務總線esb 定義 以一個服務總線充當中間件的角色&#xff0c;把各方服務對接起來&#xff0c;所有服務…

01_背包問題

package org.josh; import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner new Scanner(System.in); int n scanner.nextInt(); // 物品數量 long w scanner.nextLong(); // 背包容量&#xff0c;使用long防止溢出 int[] v …

esp32-idf Linux 環境安裝教程

一、提前說明 1. 系統環境 Ubuntu22.04 2. 適配芯片 ESP32S3 3. idf版本 v5.4.1(截止2025年4月13日為最新版本) 二、安裝步驟 1. 安裝前置依賴 sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev l…

JavaScript 輸入輸出語句

在JavaScript中&#xff0c;輸入和輸出是與用戶交互的基礎。無論是從用戶那里獲取信息還是向用戶展示結果&#xff0c;正確使用輸入輸出語句都是至關重要的。本文將詳細介紹JavaScript中常用的輸入輸出方法及其應用場景。 一、輸出語句 &#xff08;一&#xff09;console.lo…

TCP 如何在網絡 “江湖” 立威建交?

一、特點&#xff1a; &#xff08;一&#xff09;面向連接 在進行數據傳輸之前&#xff0c;TCP 需要在發送方和接收方之間建立一條邏輯連接。這一過程類似于打電話&#xff0c;雙方在通話前需要先撥號建立連接。建立連接的過程通過三次握手來完成&#xff0c;確保通信雙方都…

文章記單詞 | 第29篇(六級)

一&#xff0c;單詞釋義 AI /?e? ?a?/ abbr. 人工智能&#xff08;Artificial Intelligence&#xff09;inventory /??nv?ntri/ n. 存貨清單&#xff1b;財產清單&#xff1b;庫存貨物&#xff1b;存貨&#xff1b;v. 編制目錄&#xff1b;開列清單&#xff1b;盤存cha…

【C#】.NET 8適配器模式實戰:用C#實現高可用系統集成與接口橋接藝術

系統集成挑戰與適配器模式的價值 當需要整合不同架構或API的系統時&#xff0c;接口兼容性問題往往成為攔路虎。**適配器設計模式&#xff08;Adapter Pattern&#xff09;**通過轉換接口形態&#xff0c;完美解決這種不兼容性問題。本文將通過C# .NET 8實戰演示適配器模式的基…