Dreamweaver里面的tr,td,th分别是啥意思,怎么用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dreamweaver里面的tr,td,th分别是啥意思,怎么用?相关的知识,希望对你有一定的参考价值。

参考技术A tr td是TAB 的标签。是成对出现<table><tr><td>XXXXXX</td></tr></table>这些应用还是很简单的。本回答被提问者采纳

基于 tr 计数的 td/th 的 XPath

【中文标题】基于 tr 计数的 td/th 的 XPath【英文标题】:XPath for td/th based on tr count 【发布时间】:2019-06-18 21:21:46 【问题描述】:

使用 XPath 进行网页抓取。

结构是:

<table>
  <tbody>
     <tr>
        <th>
        <td>

但其中一个 tr 只包含一个 th 或一个 td。

<table>
      <tbody>
         <tr>
            <th>

所以我只想抓取TR 里面是否包含两个标签。我给出了路径

 $route = $path->query("//table[count(tr) > 1]//tr/th");

 $route = $path->query("//table[count(tr) > 1]//tr/td");

但它不起作用。

我在这里提供 orjinal 表的链接。第一个表的最后两个 TR 只有一个 TD。这就是问题所在。第二或第三表也有同样的问题。

https://www.daiwahouse.co.jp/mansion/kanto/tokyo/y35/gaiyo.html

      $route = $path->query("//tr[count(*) >= 2]/th");
      foreach ($route as $th)
          $property[] = trim($th->nodeValue);
      

      $route = $path->query("//tr[count(*) >= 2]/td");
      foreach ($route as $td)
          $value[] = trim($td->nodeValue);
      

我正在尝试同时选择 TH 和 TD。但是,如果 TR 包含一个 TD,那么它会导致问题。因为 TD 计数和 TH 计数不一样,所以我刮的 TD 比 TH 多

【问题讨论】:

您的 XPath 不考虑 tbody 你想要整行还是只想要行的第一个/td? 我认为您需要检查 TR 是否只是单个 TDCOLSPAN="2"。您希望将其包含在抓取中还是从抓取中排除? 我再次更新了问题,请查看。 @Scuzzy 【参考方案1】:

这个 XPath,

//table[count(.//tr) > 1]/th

将选择所有table 元素中具有多个tr 后代的所有th 元素(无论tbody 是否存在)。


这个 XPath,

//tr[count(*) > 1]/*

将选择具有多个子元素的tr 元素的所有子元素。


这个 XPath,

//tr[count(th) = count(td)]/*

将选择tr 元素的所有子元素,其中th 子元素的数量等于td 子元素的数量。


OP 发布了指向该站点的链接。根元素位于 xmlns="http://www.w3.org/1999/xhtml" 命名空间中。

见How does XPath deal with XML namespaces?

【讨论】:

足够接近但仍然需要额外费用...最后我的财产(th)计数和我的价值(th)计数不一样... 如果您可以准确地说明您要选择的内容,那么编写 XPath 会很简单。例如,“我正在尝试选择满足以下条件的 ____ 元素:______。请注意,当满足 ____ 条件时,我不想要这些元素。”在此期间,我再次猜测您可能想要什么。 我更新了问题并提供了原始表格的链接。你能检查一下吗? 您的更新仍未说明您希望选择哪些元素(tdthtrtable 等),并且您没有明确指定区分您想要哪些不想要的此类元素的条件。 哈哈,你真的做到了! :)【参考方案2】:

如果我理解正确,您希望trs 中的th 元素包含两个元素?我认为这就是您所需要的:

//th[count(../*) = 2]

【讨论】:

好的,我试过这样//th[count(../*) == 2] 但是,这个错误弹出。 “为 foreach() 提供的参数无效”“*”是什么意思? 举例说明,count(tr)统计tr元素的个数(不是tr下的元素个数)。 count(*) 计算当前路径中的每个节点。 count(../*) 统计当前节点的兄弟节点数。 我更新了问题并提供了原始表格的链接。你能检查一下吗?【参考方案3】:

我在答案中包含了一条更明确的路径,其中包含一个 or 语句来计算 TH 和 TD 元素

$html = '
  <html>
    <body>
      <table>
        <tbody>
          <tr>
            <th>I am Included</th>
            <td>I am a column</td>
          </tr>
        </tbody>
      </table>
      <table>
        <tbody>
          <tr>
            <th>I am ignored</th>
          </tr>
        </tbody>
      </table>
      <table>
        <tbody>
          <tr>
            <th>I am also Included</th>
            <td>I am a column</td>
          </tr>
        </tbody>
      </table>
    </body>
  </html>
';

$doc = new DOMDocument();
$doc->loadHTML( $html );

$xpath = new DOMXPath( $doc );
$result = $xpath->query("//table[ count( tbody/tr/td | tbody/tr/th ) > 1 ]/tbody/tr");

foreach( $result as $node )

  var_dump( $doc->saveHTML( $node ) );


// string(88) "<tr><th>I am Included</th><td>I am a column</td></tr>"
// string(93) "<tr><th>I am also Included</th><td>I am a column</td></tr>"

您也可以将其用于任何深度后代

//table[ count( descendant::td | descendant::th ) > 1]//tr

在条件(方括号部分)之后更改 xpath 以更改您返回的内容。

【讨论】:

我更新了问题并提供了原始表格的链接。你能检查一下吗?

以上是关于Dreamweaver里面的tr,td,th分别是啥意思,怎么用?的主要内容,如果未能解决你的问题,请参考以下文章

在dreamweaver中。td. tr 和 div 分别表示啥意思,各有啥功能?

html表格中的tr、 td、 td分别是啥意思

基于 tr 计数的 td/th 的 XPath

在HTML中,<TR>,<TH>,<TD>是啥标记?

用Dreamweaver做网页,在<tr>中添加背景图片,为啥显示不出来

HTML怎么插入一个表格?