测试HTML表格是否用于布局和数据?

测试HTML表格是否用于布局和数据?,html,layout,datatable,web-scraping,html-table,Html,Layout,Datatable,Web Scraping,Html Table,这更像是一个网络抓取问题。有哪些公认的方法可以自动确定是用于布局还是用于您以前从未见过的某个HTML文档中的数据 我希望能够将任何HTML文件作为字符串传递到某个函数中,该函数将吐出HTML页面中的所有数据表,但忽略纯粹用于布局的表。但是像这样的网站使用HTML表格进行布局,这使得布局变得棘手 此函数不应针对任何特定网站的DOM结构进行定制,因此它应适用于任何HTML字符串(或具有尽可能高的成功率) 这些年来,人们是否发现了能够区分布局表和数据表的算法/检查?这应该是可能的,这只是写下所有变量和

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

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

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

这些年来,人们是否发现了能够区分布局表和数据表的算法/检查?这应该是可能的,这只是写下所有变量和尝试/错误的问题——我想很多人已经在某个地方画好了

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

更新

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

  • 关键词:表格检测、布局分析、机器学习、决策树、支持向量机、信息检索

用于布局的表格通常

  • 每行有几行和几个单元格
  • 单元格中的内容长度极不一致
  • 在单元格中有很多HTML
  • 可以使用colspan/rowspan
  • 存在于DOM顶部附近
  • 不使用
  • 包含其他表格
用于数据的表格通常会

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

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

“类似网站”可能比少数网站更广泛(不幸的是)。这听起来像是一篇研究论文的主题;也许最近有人已经做过了?事实上,雅各布·尼尔森可能在他的网站上有一些东西;他似乎是那种开发这种身份启发法的人。是的,我想我在找一篇关于这个主题的研究论文。我没有找到任何b/c,我真的不知道确切的字段/主题是什么。如果有人知道一篇好的论文,那就是我想要的——虽然不是一篇关于网页抓取的普通论文,但我发现了很多:)。我原以为包含有用数据的表通常会嵌套在其他元素中,而布局表通常会直接卡在正文选项卡中。有趣的问题!给你。我仍然可能会把它全部抽真空,发展出钩子,作为一支队伍而不是一支改变了的队伍来推动它。记住,你不必全部复习,对一个统计上有效的数字进行抽样测试,然后从中得出结论;也许,300页/站点,检查50个表格,然后申请,直到你满意为止?然后去钓鱼,确信你已经很好地抓住了它,最多有3-5%的时间是错误的<代码>;)这是个人/轶事,还是源自观察和发表的东西?只是好奇;这似乎是双向的,但其特殊性过于细微。我确信一个来源对于OP是有价值的(这可能是我猜的,所以我不是在批评,只是从隐藏的地方挑出细节。)例如,这个表是一个数据表,但使用colspan/rowspan,不使用th/thead等,但你说的是一个好的开始。这个答案完全是轶事@LancePollard表示,该表确实使一些规则变得复杂,但其他规则,如内容一致性和行/单元格计数,仍然在数据表中保持一致。