如何在BeautifulSoup中找到具有特定属性的所有单元格?

时间:2008-10-18 22:37:06

标签: python parsing beautifulsoup

我正在尝试开发一个脚本来从大量的html表中提取一些数据。一个问题是包含用于创建列标题的信息的行数是不确定的。我发现标题行集的最后一行具有值为每个单元格的属性border-bottom。因此我决定找到属性为border-bottom的那些单元格。如您所见,我初始化了一个列表。我打算找到最终在borderCells列表中的每个单元格的父级。但是,当我运行此代码时,只有一个单元格,即具有属性border-bottom的allCells中的第一个单元格被添加到列表borderCells中。为了您的信息,allCells有193个单元格,其中9个有attr边界底部。因此,我期待在borderCells列表中有九名成员。任何帮助表示赞赏。

borderCells=[]
for each in allCells:
if each.find(attrs={"style": re.compile("border-bottom")}):
    borderCells.append(each)

3 个答案:

答案 0 :(得分:2)

有什么理由

  

borderCells = soup.findAll("td", style=re.compile("border-bottom")})

不行吗?很难弄清楚你要求的确切内容,因为你对原始表的描述非常模糊,并且不清楚allCells应该是什么。

我建议您提供您正在使用的HTML的代表性示例,以及从该表中提取的“正确”结果。

答案 1 :(得分:0)

嗯,你知道电脑永远是对的。答案是,在HTML中,attrs处于不同的状态。我正在建立一些看起来像这样的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>

所以现在我必须修改问题以弄清楚如何识别那些attr处于td级别而不是div级别的单元格

答案 2 :(得分:0)

有人拿走了他们的一个答案,虽然我测试了它并且它对我有用。谢谢您的帮助。这两个答案都有效,我学到了更多关于如何发布问题的知识,在我盯着代码一段时间后,我可能会更多地了解Python和BeautifulSoup

相关问题