Я пытаюсь извлечь первую цену (включая £) из HTML.
HTML:
<div class = "grid-item__price"><div class = "inc-vat"><p class = "price">
<span class = "smaller currency-symbol">£</span>
179.99
<span class = "vat-text"> inc. vat</span> </p></div>
<div class = "ex-vat"><p class = "price"><span class = "smaller currency-symbol">£</span> 149.99 <span class = "vat-text">ex. vat</span> </p></div>
</div>
Питон:
for prices in products.find_all("div", {"class": "grid-item__price"}):
print(prices)
Ожидаемый результат:
179,99 фунтов стерлингов
Попробуйте вызвать метод .next_sibling, так как ожидаемый результат равен £
, за которым следует цена (которая является следующим братом).
from bs4 import BeautifulSoup
html = """<div class = "grid-item__price"><div class = "inc-vat"><p class = "price">
<span class = "smaller currency-symbol">£</span>
179.99
<span class = "vat-text"> inc. vat</span> </p></div>
<div class = "ex-vat"><p class = "price"><span class = "smaller currency-symbol">£</span> 149.99 <span class = "vat-text">ex. vat</span> </p></div>
</div>"""
soup = BeautifulSoup(html, "html.parser")
price_symbol = soup.find("span", class_ = "smaller currency-symbol")
print(price_symbol.text, price_symbol.next_sibling.strip())
Выход:
£ 179.99