这更像是一个网络抓取问题。自动确定 <table>
是否为公认的方法是什么?用于布局还是用于数据 在您以前从未见过的一些 HTML 文档中?
我希望能够将任何 HTML 文件作为字符串传递到某个函数中,该函数在 HTML 页面中吐出所有数据表,但忽略纯粹用于布局的表。但是像 http://news.ycombinator.com/newcomments 这样的网站使用 HTML 表格进行布局,这使得它变得棘手。
此函数不应该针对任何特定网站的 DOM 结构进行定制,因此它应该适用于任何 HTML 字符串(或者具有尽可能高的成功率)。
人们多年来是否发现了可以区分布局和数据表的算法/检查?这应该是可能的,这只是写下所有变量和试错的问题——我想很多人已经在某个地方规划好了。
我不一定需要该功能(虽然那会很棒,但我想它需要大量微调)。只是在寻找一些尝试过的策略。
更新
这是一个好的开始(感谢@JaredFarrish):
- A Machine Learning Based Approach for Table Detection on The Web
- 关键词:表格检测、布局分析、机器学习、决策树、支持向量机、信息检索
最佳答案
用于布局的表格一般会
- 行数很少,每行的单元格也很少。
- 单元格中的内容长度极不一致
- 单元格中有很多 HTML
- 可以使用 colspan/rowspan
- 位于 DOM 顶部附近
- 不使用
<th>
或<thead>
- 包含其他表格
用于数据的表格一般会
- 有更多的行和每行更多的单元格
- 单元格中的内容长度相当一致
- 单元格内缺乏结构化 HTML(如
<div>
、<p>
;参见<b>
、<strong>
等不排除数据) - 可能不使用 colspan 并且很可能不使用 rowspan
- 不包含其他表格
当您抓取表格时,根据这些标准对其进行评估和评分,对它们应用分数和权重,并使用最终分数来决定它是布局还是数据。
关于html - 测试 HTML 表格是否用于布局与数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11298113/