【问题标题】:<tbody> tag displays in chrome but not source<tbody> 标签以 chrome 显示,但不显示源代码
【发布时间】:2015-12-08 01:24:38
【问题描述】:

在做一些抓取工作时,我在 Chrome DevTools 检查器中不断遇到&lt;tbody&gt; 标签,但它没有出现在源代码中。出于我希望是显而易见的原因,我觉得这非常令人困惑。这里发生了什么? (我还应该补充一点,此页面上的 html 格式非常错误)。

例如,DevTools 显示:

<table>
    <tbody>
        <tr valign="top">
            <td>...</td>

页面来源展示:

<table border="0">
    <tr valign="top">
        <td>

【问题讨论】:

标签: html google-chrome web-scraping


【解决方案1】:

&lt;tbody&gt; 的开始标签是可选的。也就是说,您可以省略它,但它会在需要时由浏览器自动插入。

而且它需要的,因为规则说你不能在table 中直接拥有trtable 元素的唯一子元素可以是 captioncolgrouptheadtbodytfoot
因此,如果浏览器在tbody 之外遇到tr,它会插入tbodytr 将驻留在其中。

有关更正式的说法,请参阅http://www.w3.org/TR/html-markup/tbody.html

顺便说一句,其他开始标签也会发生同样的情况,例如&lt;body&gt;。如果你省略了这一点,比如在&lt;/head&gt; 之后直接写一个&lt;h1&gt;,浏览器会自动插入一个隐含的&lt;body&gt;

【讨论】:

  • 是否有任何文档说明为什么它会在 chrome 中插入 &lt;tbody&gt; 标签?
  • @whisk 每个浏览器都会插入一个 tbody 元素。虽然tbody开始标记 是可选的,但元素本身不是。见html.spec.whatwg.org/multipage/syntax.html#optional-tags
  • 但是,如果您想知道为什么表格需要 tbody,那么此类问题的答案始终是,因为在设计 HTML 时就是这样设计的。可能没有令人满意的答案。
  • 感谢李斯特先生的链接和验证
猜你喜欢
  • 1970-01-01
  • 2014-09-04
  • 2016-12-16
  • 1970-01-01
  • 2016-08-26
  • 2015-10-24
  • 2018-06-17
  • 2016-05-14
  • 1970-01-01
相关资源
最近更新 更多