我的目标是从colspan下面的“td”标签中提取所有内容。我刚刚开始学习bs4。到目前为止,我可以从页面中提取所有的“trs”,但是,我只想在名为Disks的info_row类下获取信息。非常感谢您对逻辑和/或代码的任何帮助
这是HTML的摘录
<tbody>
<tr>
<td colspan="100%" class="info_row">Disks</td>
</tr>
<tr>
<td> sda </td>
<td> 123456 </td>
<td> abcdefg </td>
</tr>
<tr>
<td> sdb </td>
<td> 123456 </td>
<td> abcdefg </td>
</tr>
</tbody>
期望输出:
sda 123456 abcdefg
sbd 123456 abcdefg
到目前为止,我有以下几点:
src = open("my_page.html").read()
soup = BeautifulSoup(src, "html.parser")
tbody = soup.findAll("tbody")
for tr in tbody:
tds = tr.findAll('td')
for td in tds:
print(td.text)
此示例仅从表中选择非“colspan”行:
印刷品:
或者:您可以选择包含单元格“磁盘”的行之后的所有行:
编辑:使用
lambda
:初始for循环会找到tr标记的索引,其中td标记具有
class="info_row"
和作为Disks
的文本,使用该索引,您只需找到下一个tr标记的索引,该标记的文本要提取,并将其用作列表索引,以应用get_text()
方法提取标记内的文本:输出
要获取标记中的单个元素,可以使用此代码,因为
trs[idx+1].get_text(' ').split()
实际上是一个列表:输出
相关问题 更多 >
编程相关推荐