html = '<p class="product-new-price">96<sup>33</sup> <span class="tether-target tether-enabled tether-element-attached-top tether-element-attached-left tether-target-attached-top tether-target-attached-right">Lei</span>
</p>'

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

sup_elem = soup.find("sup").string # 33 - it works

मैं तत्व से पहले "96" कैसे प्राप्त करूं?

0
Ancyent 2 अक्टूबर 2019, 14:36

2 जवाब

आप बच्चों की विधि का उपयोग कर सकते हैं। यह p टैग के सभी बच्चों की सूची लौटाएगा। (6 इसकी पहली संतान होगी।

html = '<p class="product-new-price">96<sup>33</sup> <span class="tether-target tether-enabled tether-element-attached-top tether-element-attached-left tether-target-attached-top tether-target-attached-right">Lei</span>
</p>'

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

elem = list(soup.find("p").children)[0] #0th element of the list will be 96
sup_elem = soup.find("sup").string

result = elem + '.' + sup_elem #96.33

1
Swaroop Deval 2 अक्टूबर 2019, 11:51

इसके बजाय चयन का प्रयोग करें।

from bs4 import BeautifulSoup

html = '''<p class="product-new-price">96<sup>33</sup> <span class="tether-target tether-enabled tether-element-attached-top tether-element-attached-left tether-target-attached-top tether-target-attached-right">Lei</span>
</p>'''

soup = BeautifulSoup(html, 'html.parser')
print(soup.select_one('.product-new-price').text.strip().replace('Lei',''))

कोई नहीं है "।" स्रोत में लेकिन आप हमेशा 100 . से विभाजित कर सकते हैं

print(int(soup.select_one('.product-new-price').text.strip().replace('Lei',''))/100)
1
QHarr 2 अक्टूबर 2019, 12:28