gpt4 book ai didi

python - BS4 某些行不返回任何内容

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:31 24 4
gpt4 key购买 nike

摘要: BS4 没有获取某些 td 元素的内容,而是返回 None 而不是它们包含的数据。

详细信息:我正在尝试使用 BS4 抓取 HTML 表格(代码如下)。该表有多列,如下所示:

<tr>
<td><b>EICHERMOT</b></td>
<td>28-Mar-18</td>
<td>28,079.75</td>
<td><span class="gr_11" style="color:#0F6C02">0.45</span></td>
<td><span class="gr_11" style="color:#0F6C02">0.00%</span></td>
<td>28,560.00<br>
28,027.05</td>
<td>28298.25</td>
<td>49,050<br>
1,962</td>
<td>13,880.29</td>
<td>197,375</td>
<td><span class="gr_11" style="color:#0F6C02">750<br>
0.38%</span></td>
</tr>

我用来抓取表格的代码:

page = open("topGainers.html")
soup = BeautifulSoup(page, "lxml")
page.close()

print(soup('table')[1].findAll('tr')[i].findAll('td')[5].string)
# None

这里的问题是,当我运行此代码时,包含 br 标记的 td 返回 None。我知道这是因为它有多个 child ,但我无法解决这个问题。使用 .text 而不是 .string 返回类似于 is

[u'28,560.00', <br/>, u'\n\t\t\t\t\t\t\t\t28,027.05']

预期输出:

[u'28,560.00 28,027.05']

我该怎么办?

最佳答案

要从文本中去除多余的空格,您可以简单地使用 .get_text(' ', strip=True)

html = '''<tr>
<td><b>EICHERMOT</b></td>
<td>28-Mar-18</td>
<td>28,079.75</td>
<td><span class="gr_11" style="color:#0F6C02">0.45</span></td>
<td><span class="gr_11" style="color:#0F6C02">0.00%</span></td>
<td>28,560.00<br>
28,027.05</td>
<td>28298.25</td>
<td>49,050<br>
1,962</td>
<td>13,880.29</td>
<td>197,375</td>
<td><span class="gr_11" style="color:#0F6C02">750<br>
0.38%</span></td>
</tr>>'''

soup = BeautifulSoup(html, 'lxml')
print(soup.find_all('td')[5].get_text(' ', strip=True))
# 28,560.00 28,027.05

关于python - BS4 某些行不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49428951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com