beautifulsoup 返回包含 <br> 标签的数据为 None

5 投票
2 回答
4063 浏览
提问于 2025-04-17 12:06

我有一个这样的表格数据:

<table class="tablesorter" id="dea">
<thead>
<tr>
<th class="header ">Name</th>
<th class="header">City</th>
<th class="">Address</th>
<th class="">Phone Nos</th>
<th class="">Email</th>
<th class="">Fax</th>
</tr>
</thead>
<tbody>

<tr class="info">
<td style="font:bold 12px Tahoma; color:#1f2c48;">Audi California</td>
<td>&nbsp;California&nbsp;</td>
<td align="left">
A?85, bay Area, Phase 1, <br>
California<br>
California
- 6554655
</td>
<td align="right">
<br>4747744747<br>108388383
</td>
<td align="center">
info<!-- >@_ -->@<!-- >@_ -->audiCal<!-- >@_ -->.<!-- >@_ -->net
</td>
<td align="right">
&nbsp;
</td>
</tr></tbody>
</table>

我正在使用beautifulsoup来解析这个表格,但现在在获取最后四个<td>的数据时遇到了问题。每当我使用.string属性读取它们的值时,得到的结果都是None。我猜这可能是因为这些单元格里有<br>标签。我想要获取最后四个<td>的数据,分别是地址、电话号码、电子邮件和传真。那我应该用什么来替代.string,才能获取到这些数据呢?

2 个回答

0

一旦你拿到了 td 元素的引用,你就可以使用:

 td.findAll(text=True) 

来获取 td 标签里面的文本子元素列表。然后你可以用 join 把这个列表用 , 连接起来。

4

你可以使用 .text 来获取文本内容。

补充:

另外一个选择是使用 .contents 获取每个元素,然后根据需要把它们连接起来。

撰写回答