BeautifullSoup возвращает весь DIV, но без значения - PullRequest
1 голос
/ 16 июня 2020

Это может быть что-то вроде базового c вопроса, но либо я не знаю, как его сформулировать, либо не нахожу ответа.

Итак, я хочу почистить конкретное c значение веб-сайта ( 18,73 кВт · ч ) в этом сценарии.

> <div class="itemized-bill-header-consumption"data-bind="text:$root.formatItemizedbillConsumption(key.consumption,key.type)">18.73kWh</div>

Итак, я использую Python и BeutifullSoup, чтобы получить значение

kwh = soup.findAll('div',{"class":"itemized-bill-header-consumption"})

Дело в том, что в результате я получаю

[<div class="itemized-bill-header-consumption" data-bind="text:$root.formatItemizedbillConsumption(key.consumption,key.type)"></div>]

Что почти все за вычетом желаемого значения ... и я не могу понять почему.

Заранее благодарим за помощь

Ответы [ 2 ]

2 голосов
/ 16 июня 2020

Используйте метод get_text().

html = """
<div class="itemized-bill-header-consumption"data-bind="text:$root.formatItemizedbillConsumption(key.consumption,key.type)">18.73kWh</div>
"""

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, features='lxml')
for div in soup.findAll('div',{"class":"itemized-bill-header-consumption"}):
    print(div.get_text())

Вывод

18.73kWh
1 голос
/ 16 июня 2020

Вы можете использовать CSS селектор select. Вы можете попробовать:

from bs4 import BeautifulSoup
html_doc="""<div class="itemized-bill-header-consumption"data-bind="text:$root.formatItemizedbillConsumption(key.consumption,key.type)">18.73kWh</div>"""

soup = BeautifulSoup(html_doc, 'lxml')

kwh = soup.select("div", class_="itemized-bill-header-consumption")[0].text
print(kwh)

Результат будет:

18.73kWh
...