从td,span和style

时间:2018-06-05 14:38:58

标签: python beautifulsoup

<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.我如何提取它们?我在Python中使用BeautifulSoup。

1 个答案:

答案 0 :(得分:0)

您需要在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]