2

我正在尝试开发一个脚本来从大量 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)
4

3 回答 3

3

有什么理由吗

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

行不通?由于您对原始表格的描述非常模棱两可,而且还不清楚 allCells 应该是什么,因此很难准确地弄清楚您要的是什么。

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

于 2008-10-18T23:35:32.567 回答
0

好吧,您知道计算机总是正确的。答案是 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 等的其他位置如下所示:

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

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

于 2008-10-18T23:36:05.653 回答
0

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

于 2008-10-18T23:45:51.610 回答