3

这更像是一个网络抓取问题。有哪些公认的方法可以自动确定 a<table>是用于布局还是用于您以前从未见过的 HTML 文档中的数据?

我希望能够将任何 HTML 文件作为字符串传递到某个函数中,该函数会吐出 HTML 页面中的所有数据表,但忽略纯粹用于布局的表。但是像http://news.ycombinator.com/newcomments这样的网站使用 HTML 表格进行布局,这很棘手。

此函数不应该针对任何特定网站的 DOM 结构进行定制,因此它应该适用于任何 HTML 字符串(或具有尽可能高的成功率)。

多年来人们是否有任何算法/检查可以区分布局和数据表?这应该是可能的,这只是写下所有变量和试错的问题——我想很多人已经在某个地方制定了计划。

我不一定需要这个功能(虽然这很棒,但我想它需要很多微调)。只是在寻找一些尝试过的策略。

更新

这是一个好的开始(感谢@JaredFarrish):

4

1 回答 1

3

用于布局的表格通常会

  • 每行有几行和几个单元格。
  • 单元格中的内容长度非常不一致
  • 单元格中有很多 HTML
  • 可以使用 colspan / rowspan
  • 存在于 DOM 顶部附近
  • 不使用<th><thead>
  • 包含其他表

用于数据的表格通常会

  • 每行有更多行和更多单元格
  • 单元格中的内容长度合理一致
  • 单元格内缺少结构化 HTML(如<div>, <p>; see <b>,<strong>等不排除数据)
  • 可能不使用 colspan 并且很可能不使用 rowspan
  • 不包含其他表

当您抓取表格时,根据这些标准对其进行评估和评分,对它们应用分数和权重,并使用最终分数来决定它是布局还是数据。

于 2012-07-02T17:39:48.297 回答