BeautifulSoup получить определенное значение

1

Я использую очень простую вещь, чтобы получить необходимую мне информацию:

a = soup.find_all(class_ = "pull-right hidden-phone")
print(a)
print(a[0])

И выход:

[<span class="pull-right hidden-phone"><span data-c="190000000" data-time="1535345254000">1.9 BTC</span></span>, <span class="pull-right hidden-phone"><span data-c="4890548" data-time="1535345254000">0.04890548 BTC</span></span>]
<span class="pull-right hidden-phone"><span data-c="190000000" data-time="1535345254000">1.9 BTC</span></span>

Я хочу получить 1.9 BTC или 190000000, но не знаю, как это сделать. Я попробовал print(a[0]["data-time"]) и это не работает, это говорит

return self.attrs [key] KeyError: 'data-time'

Однако эта print(a[0]["class"]) работает и дает в результате ['pull-right', 'hidden-phone'].

Итак, как я могу получить 1.9 BTC или 190000000?

Теги:
beautifulsoup

2 ответа

0
Лучший ответ

Вы должны попробовать таким образом, дайте эту помощь

from bs4 import BeautifulSoup
text = """
<span class="pull-right hidden-phone"><span data-c="190000000" data-time="1535345254000">1.9 BTC</span></span>, 
<span class="pull-right hidden-phone"><span data-c="4890548" data-time="1535345254000">0.04890548 BTC</span></span>
"""

soup = BeautifulSoup(text, 'html.parser')
for tag in soup.find_all('span', attrs={'class': 'pull-right hidden-phone'}):
    span_tag = tag.span
    print('Attribute Value:', span_tag.get('data-c'), 'Date-time:', span_tag.get('data-time'), 'Tag Text:', span_tag.get_text())


# Output as: 
# Attribute Value: 190000000 Date-time: 1535345254000 Tag Text: 1.9 BTC
# Attribute Value: 4890548 Date-time: 1535345254000 Tag Text: 0.04890548 BTC
0

Используйте print(a.find("span").span["data-time"]) или print(a.span.span["data-time"])

Пример:

from bs4 import BeautifulSoup
s = """<span class="pull-right hidden-phone"><span data-c="190000000" data-time="1535345254000">1.9 BTC</span></span>"""
a = BeautifulSoup(s, "html.parser")

print(a.find("span").span["data-time"])
print(a.span.span["data-c"])
print(a.span.span.text)

Выход:

1535345254000
190000000
1.9 BTC

Ещё вопросы

Сообщество Overcoder
Наверх
Меню