Python BeautifulSoup - получить значения от p - PullRequest
0 голосов
/ 02 октября 2019
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" перед элементом?

Ответы [ 3 ]

1 голос
/ 02 октября 2019

Вы можете получить предыдущий тег родного брата

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')

elem1 = soup.find("sup").previousSibling
elem2 = soup.find("sup").text # 33 - it works

print ('.'.join([elem1, elem2]))

Вывод:

96.33
1 голос
/ 02 октября 2019

Вместо этого используйте select.

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 голос
/ 02 октября 2019

Вы можете использовать метод детей. Он вернет список всех потомков тега 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...