为了账号安全,请及时绑定邮箱和手机立即绑定

打印所有文本,只需要一个

打印所有文本,只需要一个

炎炎设计 2021-06-11 14:04:18
我有一个 html 文件:<div class="panel-heading">Some Text1<strong>Hello</strong></div><div>Some Text2Some Text3<strong>Hi1Hi2</strong我想使用 selenium 在我的 python 脚本中只打印Hello,所以我尝试了:element = driver.find_element_by_xpath("//div[@class='panel-heading']")    for element in driver.find_elements_by_tag_name('strong'):    print (element.text)结果是:你好嗨1嗨2但我只想:你好
查看完整描述

3 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

你可以简单地使用


element = driver.find_element_by_xpath("//div[@class='panel-heading']")

print(element.find_element_by_tag_name('strong').text)

从所需打印第一个 strong文本div


请注意,这for element in driver.find_elements_by_tag_name('strong')意味着迭代页面上的所有 strong节点。您需要替换driverwithelement来迭代strong定义的 WebElement 的后代:


for strong in element.find_elements_by_tag_name('strong'):

    print(strong.text)


查看完整回答
反对 回复 2021-06-15
?
达令说

TA贡献1821条经验 获得超6个赞

你的代码给你列表。所以只需使用列表的第一个元素,它会给你“你好”。

element = driver.find_elements_by_tag_name('strong')[0]


查看完整回答
反对 回复 2021-06-15
?
波斯汪

TA贡献1811条经验 获得超4个赞

你在你的代码中犯了一个小错误,你得到了div,panel-heading但在循环中你迭代抛出strongDOM 中所有带有标签的元素。也许,这里是你想要的样子:


divElement = driver.find_element_by_xpath("//div[@class='panel-heading']")    

for element in divElement.find_elements_by_tag_name('strong'):

    print (element.text)

但是divwithpanel-heading只包含一个spanand strong,您可以使用 css 选择器获取它:


strongText = driver.find_element_css_selector(".panel-heading strong").text


查看完整回答
反对 回复 2021-06-15
  • 3 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信