简体   繁体   中英

python nested Tags (beautiful Soup)

I used beautiful soup using python to get data from a specific website but I don't know how to get one of these prices but I want the price in gram (g) AS shown below this is the HTML codeL:

<div class="promoPrice margBottom7">16,000 
L.L./200g<br/><span class="kiloPrice">79,999 
L.L./Kg</span></div>

I use this code:

p_price = product.findAll("div{"class":"promoPricemargBottom7"})[0].text

my result was: 16,000 LL/200g 79,999 LL/Kg

but i want to have: 16,000 LL/200g only

You will need to first decompose the span inside the div element:

from bs4 import BeautifulSoup

h = """
<div class="promoPrice margBottom7">16,000 L.L./200g<br/>
<span class="kiloPrice">79,999 L.L./Kg</span></div>
"""

soup = BeautifulSoup(h, "html.parser")
element = soup.find("div", {'class': 'promoPrice'})
element.span.decompose()
print(element.text)
#16,000 L.L./200g

Try using soup.select_one('div.promoPrice').contents[0]

from bs4 import BeautifulSoup

html = """<div class="promoPrice margBottom7">16,000 L.L./200g<br/>
<span class="kiloPrice">79,999 L.L./Kg</span></div>"""

soup = BeautifulSoup(html, features='html.parser')

# value = soup.select('div.promoPrice > span')  # for 79,999 L.L./Kg
value = soup.select_one('div.promoPrice').contents[0]
print(value)

Prints

 16,000 LL/200g

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM