【问题标题】:Can simplexml be used to rifle through html?可以使用 simplexml 来遍历 html 吗?
【发布时间】:2011-10-01 22:13:58
【问题描述】:

我想在不使用正则表达式的情况下从表中获取数据。我很喜欢使用 simplexml 来解析 RSS 提要,并且想知道它是否可以用来从另一个页面抓取表格。

例如。使用 curl 或简单地获取页面 file_get_contents();然后用simplexml抓取内容?

【问题讨论】:

    标签: php html parsing simplexml


    【解决方案1】:

    如果这是 XHTML — 是的,这绝对是可能的。真正的 XHTML 归根结底就是 XML,所以可以用 XML 解析器来解析。

    然而,SimpleXML 只接受严格的 XML。如果您无法获得有效的 XHTML,那么首先将其放入不太严格的 DOMDocument 库即可解决问题 (source here):

    <?php
      $html = file_get_contents('http://...');
      $doc = new DOMDocument();
      $doc->strictErrorChecking = FALSE;
      $doc->loadHTML($html);
      $xml = simplexml_import_dom($doc);
    ?>
    

    【讨论】:

      【解决方案2】:

      您可以使用 DOM 模块中的 loadHTML 函数,然后通过 simplexml_import_dom 将该 DOM 导入 SimpleXML:

      $html = file_get_contents('http://example.com/');
      $doc = new DOMDocument();
      $doc->loadHTML($html);
      $sxml = simplexml_import_dom($doc);
      

      【讨论】:

      • 大+1。添加了指向simplexml_import_dom 的链接和一点点进一步的解释。
      • 非常好的技巧。不幸的是,我正在处理的服务器上似乎没有安装 DOM 模块。它通常是标准的吗>?
      • @chris DOM 及其依赖项 libxml 均默认编译。它们可以在编译中显式忽略或在运行时禁用,但这是非常不寻常的。
      • 我收到致命错误:在...中找不到类“DOMDocument”,我假设我的学校在服务器上运行了一个奇怪的 linux 版本,所以它丢失了。 simplexml 和 libxml 可用。我会要求他们安装它。谢谢。
      【解决方案3】:

      它可能取决于一个页面。如果页面是 XHTML(现在大多数网页),那么任何 XML 解析器都应该这样做,否则寻找 SGML 解析器。这里有一个类似的问题,你可能感兴趣:Error Tolerant HTML/XML/SGML parsing in PHP

      【讨论】:

      • 大多数网页?该数据的来源?另外,请在 SO(或一般的互联网)周围挖掘,找出人们通常不能正确提供 XHTML 的原因。
      【解决方案4】:

      我的版本 - 容忍错误和编码问题

      libxml_use_internal_errors(true);
      $doc = new DOMDocument();
      $doc->strictErrorChecking = FALSE;
      $doc->loadHTML(mb_convert_encoding($this->html_content, 'HTML-ENTITIES',  'UTF-8'));
      libxml_use_internal_errors(false);
      $xml = simplexml_import_dom($doc);
      

      【讨论】:

        猜你喜欢
        • 2023-03-26
        • 2021-04-09
        • 1970-01-01
        • 2013-11-02
        • 1970-01-01
        • 2017-06-30
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        相关资源
        最近更新 更多