如何使用Selenium和Python从标记属性中提取数据?

2024-09-27 00:17:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Selenium提取学生分数。现在我想得到马克的重量(每个分数都有自己的重量),然后用它来计算学生的加权平均数

这是包含所有信息的标签

<span class="score-font color-f04c4c" data-qtip="Code: II<br/>Description: abcd/June<br/>Weight: 2<br/>Date: 28.02.2020<br/>Teacher:xxx">5</span>

我的问题是如何提取:

"Weight: 2"


Tags: br信息selenium标签学生分数classcolor
3条回答

所需的值存储在属性data-qtip中。使用getAttribute方法获取此属性的值

att_Value= driver.find_element_by_tag_name('<xpath for containing span>').get_attribute("data-qtip")

现在,由于上面的文本中有多个值,并且由换行符</br>分隔,所以您可以将上面的字符串转换为一个列表,并提取所需的任何信息

values = att_Value.split("<br/>")
for v in values:
    print(v)

上面将打印如下。您可以使用列表索引,如值[0]将为您提供代码,值[2]将为您提供代码权重等

输出:

enter image description here

我认为你的HTML可能有点混乱,所以一定要为将来复制准确的HTML。在“Code:II”之后应该有一个结束引号(如果我没有弄错的话),否则所有的br标记都只是作为字符串呈现。由于您试图获取的信息是该元素的文本,因此只需使用Selenium中的.text属性即可

my_element = browser.find_element_by_xpath('//span[@id="some_id"]/whatever/path')
my_element_text = my_element.text #grabbing the text property of the element and storing it as a string

如果您只想将.text固定到第一行的末尾,则可以将其固定到第一行。现在,只需对该字符串进行一些后处理,并去除任何您不想要的内容(例如,教师、日期)

你可以用

my_element_text= browser.find_element_by_xpath('//span[contains(.,'Weight')]').text

//现在使用substring函数获取所需文本。假设权重从字符32开始

my_element_text[32:42]

输出: 体重:2

相关问题 更多 >

    热门问题