【问题标题】:Parsing HTML several tables DOM [closed]解析 HTML 几个表格 DOM [关闭]
【发布时间】:2013-06-25 02:14:56
【问题描述】:

在准备执行以下操作时,我发现了很多不清楚的信息,所以我想我问一下,看看是否有人可以为我解决问题。

@符号对后面的作用究竟是什么

 $domOb = new DOMDocument();
 $html  = @$domOb->loadHTMLFile('http:...'); 

这确实消除了一个错误并实际解析了数据,但这是一个很好的实践解决方案。我在没有@符号的情况下使用了它并得到了预期的结果。

鉴于我有几个表,从假设表 3 中获取所有 <td> 的最佳/最简单方法是什么。我打算列出所有 <td>,然后简单地以相关的值开始和结束需要的数据

如果希望通过 PHP 解析 HTML,我喜欢使用 DOM 的想法,所以在获取文件时应该使用什么。 loadHTMLFile() loadHTML()...我还能使用 Xpath 吗?...如果它的 HTML 非常繁忙/标记错误,这有关系吗?

查看数据有什么好的做法

    $items = $domOb->getElementsByTagName('td');

    $k    = 0;
    $num  = $items->length;
    while ($k < $num)
    {
        echo $item_web = $items->item($k)->, '<br>';
        $k++;
    }

我发现这很好 How do you parse and process HTML/XML in PHP? 但它已有 2 年历史了,所以我想提出一些问题。

只是第 3 个表格的一个小片段...乍一看,我注意到第 3 个标记处有一个空格,这会影响结果吗?

 <td>Parcel ID: <a href=... style=text-decoration:underline;><b>666666</b></a></td>
 <td>Name: Mr. help</td></tr><tr>
 <td >Parcel Address: 666 help RD&nbsp;</td>
 <td>Name2: Ms. help F</td></tr><tr><td>City: Helpover 66666</td>
 <td>Address: 6666 6TH AVE NE UNIT 333</td>

【问题讨论】:

  • 如果您熟悉 jQuery,您可能会喜欢 phpQuery。我知道当我必须选择深度嵌套的节点并想要开发子/父/兄弟关系时,我不想为它创建一个框架。
  • Stackoverflow 通过一次问一个问题来工作(最好)。因此,我只回答了关于错误抑制运算符的问题。关于 HTML 表解析,我们已经有一些与 DOM 相关的资源,但我认为到目前为止我们还没有提供基于 DOM 的表模型的答案。但是,我想说这需要一个孤立的问题。其余的:解释了 Xpath,只有 2 岁的问题没有理由再问一次。只是说。

标签: php html parsing xml-parsing html-parsing


【解决方案1】:

@ 符号对以下内容究竟做了什么

它应该抑制错误,但这不是在 DomDocument 和相关扩展上执行此操作的正确方法。正确的方法是在加载格式错误的 HTML 之前调用libxml_use_internal_errors(true);

我还能使用 Xpath 吗?

是的:

$xpath = new DomXPath($domOb);
$tds = $xpath->query('//td');

我注意到第三个标签有一个空格,这会影响结果吗?

当您从 TD 节点访问 textContent 属性时,将转换实体。

【讨论】:

    【解决方案2】:

    这个 [@ error control operator] 确实消除了一个错误并实际解析了数据,但这是一个好的实践解决方案。我在没有@符号的情况下使用了它并得到了预期的结果。

    它不会删除错误,它会忽略它,例如错误级别将设置为 0,如果打开显示错误,则不会显示该错误。但它仍然存在,并且在使用错误处理程序时仍会被处理。

    您可以想象,这不是一个好习惯。避免它,如果你看到有它的代码,请放心,它的质量较低。另请参阅:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-25
      • 2013-06-21
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 2015-08-25
      • 1970-01-01
      • 2017-05-19
      相关资源
      最近更新 更多