BeutifulSoup извлекает из тд, пролета и стиля - PullRequest
0 голосов
/ 05 июня 2018
<td><span data-tooltip="some text" class="tooltip button is-success is-small" style="cursor: default;">
23 - 1 - 13 (<span class="is-danger" style="font-weight: 700;">1.77</span>)

Я ищу эти числа 23 - 1 - 13. Как их извлечь?Я использую BeautifulSoup в Python.

1 Ответ

0 голосов
/ 05 июня 2018

Вам нужно будет выполнить поиск по span, а не по td, поскольку это тот элемент, который содержит искомый класс:

soup.find_all('span', class_="tooltip button is-success is-small")

Также вы можете использовать soup.span.text чтобы найти текст в теге span.Затем какой-то стандартный Python, чтобы разделить его и преобразовать в числа.Если имеется несколько элементов, это можно сделать следующим образом:

from bs4 import BeautifulSoup

html = """
<td><span data-tooltip="some text" class="tooltip button is-success is-small" style="cursor: default;">23 - 1 - 13 (<span class="is-danger"style="font-weight: 700;">1.77</span>)</td>
<td><span data-tooltip="some text" class="tooltip button is-success is-small" style="cursor: default;">23 - 1 - 13 (<span class="is-danger"style="font-weight: 700;">1.77</span>)</td>
<td><span data-tooltip="some text" class="tooltip button is-success is-small" style="cursor: default;">23 - 1 - 13 (<span class="is-danger"style="font-weight: 700;">1.77</span>)</td>
"""

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

for span in soup.find_all('span', class_='tooltip button is-success is-small'):
    numbers = [int(v) for v in span.text.strip().split(' ')[:-1] if v != '-']
    print(numbers)

Это даст вам три числа в списке следующим образом:

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