Selenium 如何仅从 class 内的 <b> 标签获取文本

Selenium how to get text only from <b> tag inside class

我正在尝试使用 python 和 selenium 将网站上的所有产品价格添加到列表中,但是当价格打折时我遇到了问题并且在网站上看起来像这样:

HTML 此站点的代码:

<span class="product-price promo-price">
  <b>
    79,00
    ::after
  </b>
  <del>
    89,00
    ::after
  </del>
</span>

我将价格放入列表的 selenium 代码:​​

def test5():
    sort = driver.find_element(By.CSS_SELECTOR, ".sorter-button").click()
    sort2 = driver.find_element(By.CSS_SELECTOR, ".sorter-listing > span:nth-child(3) > label:nth-child(2)").click()
    prices = driver.find_elements(By.CLASS_NAME, "product-price ")
    a = []
    for i in prices:
        a.append(i.text)
    print(a)

这段代码的输出是:

['19,90', '50,00', '78,99', '79,00\n89,00', '95,00\n128,00', '135,00', '137,95', '149,00\n158,00', '191,00', '199,00', '199,99\n267,50', '200,00\n300,00']

问题是同时获取折扣值和正常值,例如 - 79,00\n89,00

我怎样才能只获得折扣价,所以列表会像这样:

['19,90', '50,00', '78,99', '79,00', '95,00', '135,00', '137,95', '149,00', '191,00', '199,00', '199,99', '200,00']

如果我这样做,例如 XPATH,那么我只能从网站上获得一个价格,而不是全部。

 a.append(i.text.splitlines[1])