如何在BeautifulSoup中查找具有特定属性的所有单元格?
我正在尝试写一个脚本,从很多HTML表格中提取一些数据。遇到的问题是,包含用来创建列标题的信息的行数是不确定的。我发现,最后一行的每个单元格都有一个叫做border-bottom的属性。因此,我决定找出那些带有border-bottom属性的单元格。正如你看到的,我初始化了一个列表。我本来想找到每个在borderCells列表中的单元格的父元素。但是,当我运行这段代码时,只有一个单元格,也就是在所有单元格中第一个带有border-bottom属性的单元格被添加到了borderCells列表中。为了让你了解情况,allCells总共有193个单元格,其中9个有border-bottom属性。所以我本来期待borderCells列表中有九个成员。任何帮助都很感激。
borderCells=[]
for each in allCells:
if each.find(attrs={"style": re.compile("border-bottom")}):
borderCells.append(each)
3 个回答
0
有人把他们的一个回答删掉了,不过我测试过,那个回答对我来说是有效的。谢谢你的帮助。两个回答都很好用,我也学到了一些关于如何提问的知识。再过一段时间我仔细看看代码,可能会对Python和BeautifulSoup有更多的了解。
0
你知道,电脑总是对的。这里的意思是,属性在HTML中是放在不同的地方的。我之前参考的HTML大概是这样的:
<TD nowrap align="left" valign="bottom">
<DIV style="border-bottom: 1px solid #000000; width: 1%; padding-bottom: 1px">
<B>Name</B>
</DIV>
</TD>
文件中其他地方的样式,比如style="border-bottom"等,看起来是这样的:
<TD colspan="2" nowrap align="center" valign="bottom" style="border-bottom: 1px solid 00000">
<B>Location</B>
</TD>
所以现在我得修改一下问题,想办法找出那些属性是在
标签上的单元格。
3
有没有什么原因
borderCells = soup.findAll("td", style=re.compile("border-bottom")})
这段代码可能不管用吗?你提问的内容有点难以理解,因为你对原始表格的描述不太清楚,而且也不太明白allCells到底是什么。
我建议你提供一段你正在处理的HTML代码示例,以及从那个表格中提取的“正确”结果。