【问题标题】:How do I find all cells with a particular attribute in BeautifulSoup?如何在 BeautifulSoup 中找到具有特定属性的所有单元格?
【发布时间】:2010-09-17 22:58:30
【问题描述】:

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

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

【问题讨论】:

    标签: python parsing beautifulsoup


    【解决方案1】:

    有什么原因吗

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

    不行吗?由于您对原始表格的描述非常模棱两可,而且还不清楚 allCells 应该是什么。

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

    【讨论】:

      【解决方案2】:

      你知道计算机永远是对的。答案是 attrs 在 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 etc 的其他地方如下所示:

      <TD colspan="2" nowrap align="center" valign="bottom" style="border-bottom: 1px solid 00000">
      <B>Location</B>
      </TD>
      

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-17
          • 1970-01-01
          相关资源
          最近更新 更多