首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Selenium :在元素中获取文本,而不是在元素内的嵌套标记中获取文本

Selenium :在元素中获取文本,而不是在元素内的嵌套标记中获取文本
EN

Stack Overflow用户
提问于 2022-07-05 10:54:34
回答 3查看 243关注 0票数 1

假设我有一个元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="ProductVariants__PriceContainer-sc-1unev4j-9 jjiIua">199 
    <span class="ProductVariants__MRPText-sc-1unev4j-10 jEinXG">690
    </span>
    <div class="Product__Dicount">
        No discount available for this product
    </div>
</div>

当我用类名获取元素时

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
div_containing_radio = driver.find_element(by=By.XPATH, value="//div[starts-with(@class, 'ProductVariants__RadioButtonInner')]//ancestor::div[starts-with(@class, 'ProductVariants__VariantCard')]")
div_containing_radio.find_element(by=By.CSS_SELECTOR, value=".ProductVariants__PriceContainer-sc-1unev4j-9.jjiIua").text

这给了我

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'₹199 ₹690 No discount available for this product'

我想要的只是₹199

请注意,随着页面结构的不断变化,我不能仅仅格式化文本并获得第一个由space拆分的文本。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-05 12:11:03

使用一些JS:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
js_query = """
            var x = document.querySelector('.ProductVariants__PriceContainer-sc-1unev4j-9.jjiIua').childNodes;
            var l = "";
    
            x.forEach(i => {
                if (i.nodeName === '#text') {
                    l += ' ' + i.textContent;
                }
            });
            return l;
"""

price = driver.execute_script(js_query).strip()
print(price)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
199

我们对JS所做的是获取目标div元素的所有子节点。然后,我们将遍历所有这些节点,并仅从文本节点获取值。同时,我们正在将所有这些值添加到字符串类型变量l中。我们从JS返回l,并去掉Python中无用的字符。就这样。

票数 2
EN

Stack Overflow用户

发布于 2022-07-05 13:02:45

@Firelord (+1)的答案可以简化为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
div_containing_radio = driver.find_element(by=By.XPATH, value="//div[starts-with(@class, 'ProductVariants__RadioButtonInner')]//ancestor::div[starts-with(@class, 'ProductVariants__VariantCard')]")
price = div_containing_radio.find_element(by=By.CSS_SELECTOR, value=".ProductVariants__PriceContainer-sc-1unev4j-9.jjiIua")

print(driver.execute_script("return arguments[0].firstChild.textContent;", price).strip())
票数 1
EN

Stack Overflow用户

发布于 2022-07-05 11:01:36

要从字符串中只打印199,只需对整个字符串进行拆分,然后按如下方式打印第二个元素:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(div_containing_radio.find_element(by=By.CSS_SELECTOR, value=".ProductVariants__PriceContainer-sc-1unev4j-9.jjiIua").text.split("₹")[1])

作为另一种选择,您还可以拆分与blankspace相关的字符串,并按如下方式打印第一个元素:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(div_containing_radio.find_element(by=By.CSS_SELECTOR, value=".ProductVariants__PriceContainer-sc-1unev4j-9.jjiIua").text.split(" ")[0])    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72874278

复制
相关文章
Python - 删除列表中的重复字典
Python 是一个非常广泛使用的平台,用于 Web 开发、数据科学、机器学习以及自动化执行不同的过程。我们可以将数据存储在python中,以不同的数据类型,例如列表,字典,数据集。python字典中的数据和信息可以根据我们的选择进行编辑和更改
很酷的站长
2023/08/11
3601
Python - 删除列表中的重复字典
python中删除列表中重复元素
在面试中,很可能遇到给定一个含有重复元素的列表,删除其中重复的元素,下边给出三种方法来实现这个功能。
全栈程序员站长
2022/09/07
4.1K0
72-R编程12-删除列表的成员对象中的重复内容
比如 a,b,c 在列表1 出现,bc 在列表2 出现,ad 在列表3 出现,那么仅仅保留1:abc, 2:空, 3:d。这个列表中的对象可以是数据框,也可以是单个字符,也可以是列表,可以是任何类型的对象。
北野茶缸子
2021/12/17
2.7K0
11 - 去掉列表或元组中的重复元素
在python 中如何定义集合,集合与列表有什么区别 # 列表 a = [1, 2, 3, 4, 5] print(type(a)) # 元组 b = (1, 2, 3, 4, 5) print(type(b)) # 集合 c = {1, 2, 3, 4, 5} print(type(c)) <class 'list'> <class 'tuple'> <class 'set'> # 区别: # 1. 集合没有重复的元素,而列表可以有重复的元素 a = [1, 2, 2, 3, 4] print(a)
ruochen
2021/05/22
3.6K0
11 - 去掉列表或元组中的重复元素
【leetcode刷题】T103-从分类列表中删除重复项目 II
使用两个指针pre和cur,pre始终指向链表前一部分非重复元素的最后一个节点,cur指向pre指向的节点后重复元素的最后一个节点。当pre->next == cur时,说明cur->val是唯一元素,不用删除,否则pre->next = cur->next。
木又AI帮
2019/07/17
2.3K0
Python - 从字典列表中删除字典
字典是python的一个非常常用的功能,用于根据用户需要在其中存储数据。另一个典型的过程涉及编辑或操作此数据。要成为一名高效且快速的程序员,您必须弄清楚如何从字典列表中删除字典。有许多技术可以从词典列表中删除字典,本文将介绍这些技术。
很酷的站长
2023/08/11
2530
Python - 从字典列表中删除字典
[LEETCODE]从排序数组中删除重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
用户2353021
2020/05/11
6.3K0
python中的列表与元组
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
六小登登
2019/08/14
3.1K0
Python列表和元组
②name_list.extend(new_name_list):将new_name_list中的元素全部添加到name_list中;
虫无涯
2023/02/02
2.2K0
Swift 从排序数组中删除重复项 - LeetCode
给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。
韦弦zhy
2018/09/11
5.2K0
如何从 Python 列表中删除所有出现的元素?
在 Python 中,列表是一种非常常见且强大的数据类型。但有时候,我们需要从一个列表中删除特定元素,尤其是当这个元素出现多次时。本文将介绍如何使用简单而又有效的方法,从 Python 列表中删除所有出现的元素。
网络技术联盟站
2023/06/01
12.5K0
用于从数组中删除重复元素的 Python 程序
python 中的索引从 0 开始。在上面的块中,整数 6、4、1、5、9 是数组元素,0、1、2、3、4 是各自的索引值。
很酷的站长
2023/08/11
2960
【Python】元组 tuple ③ ( 元组中 列表类型 元素值可修改 | 元组 while 循环遍历 | 元组 for 循环遍历 )
元组中的 元素 是 不可修改的 , 但是如果在 元组中 放入了一个 列表类型的元素 , 列表引用无法修改 , 但是列表中的 元素是可以修改的 ;
韩曙亮
2023/10/11
3700
Python列表与元组
阅读文本大概需要 4.8 分钟 写在前面 经过一周的学习与试错,到现在基本上已经能够熟练掌握公众号的各项功能以及排版上的一些技巧了。从开始时的笨手笨脚,到现在略微的小有成就,说明其实每一天都在进步。 也许每一天的进步看起来可能微乎其微,但是坚持下来呢?如果以月、以年、以一生为单位的话会怎样呢? 今天在这里立个flag,一方面督促自己更好地坚持创作分享,和大家一起见证此公号的成长;另一方面也希望能给大家带来一些思考,开始着手于做自己感兴趣的事情。 分享给大家一句话:「当你决定好要做一件事情的时候那就开始吧,
Python技术与生活认知的分享
2018/07/03
7910
python 元组列表排序
data = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
用户5760343
2019/07/07
1.1K0
python列表、元组(三)
一、列表 1. 创建列表 >>> name = ['gao', 'sam', 'snow', 'jey'] >>> type(name) <type 'list'> >>> name=list(['gao', 'sam', 'snow', 'jey'])   # python 3.0+ 会报错 >>> type(name) <type 'list'> >>> name = [] >>> type(name) <type 'list'> >>> name = list()   # python 3.0+ 会报
py3study
2020/01/13
5010
Python中列表和元组该怎么选?
列表(list)和元组(tuple)是 Python 中两种重要的数据结构。列表和元组之间有相似的地方也有不同的地方,了解两者的异同可以更好的使用它们,下面我们便对列表和元组做一个比较。
mr.songw
2021/01/14
1.5K0
Python中列表和元组该怎么选?
python列表、元组、字典
列表是由一序列特定顺序排列的元素组成的。可以把字符串,数字,字典等都可以任何东西加入到列表中,列表中的元素之间没有任何关系。列表也是自带下标的,默认也还是从0开始。列表常用方括号表示,即:[],元素用逗号隔开。
py3study
2020/01/15
1.2K0
python---列表、元组
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。
py3study
2020/01/06
5040
删除链表中重复的结点
题目描述 解题描述 public class DeleteDuplicationInList { static class ListNode { public ListNode next; public Integer val; } /** * 只能删除连续的的重复数字 * @param pHead * @return */ public ListNode deleteDuplication(Li
MickyInvQ
2021/12/07
2K0
删除链表中重复的结点

相似问题

在XQuery中在MarkLogic上实现自然排序

15

MySQL自然排序(如OSX )

21

在java中如何在两个列表中进行自然连接?

10

如何在SQL oracle中自然连接,然后从此表中进行选择

35

如何在XQuery中进行有效的外或左连接?

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文