如何在不丢失标签的情况下抓取网页数据

时间:2011-03-18 07:46:13

标签: php dom serialization innerhtml

我正在尝试使用php和dom xpath来抓取网页数据。当我将$ node-&gt; nodeValue存储到我的数据库中时,或者即使我尝试回显它,也会丢失所有标记,如<p><br>。所以我得到所有的串联连接。如何解决这个问题

2 个答案:

答案 0 :(得分:3)

如果您有一个节点,并且您需要所有内容,则可以使用此功能:

function innerHTML(DOMNode $node)
{
  $doc = new DOMDocument();
  foreach ($node->childNodes as $child) {
    $doc->appendChild($doc->importNode($child, true));
  }
  return $doc->saveHTML();
}

答案 1 :(得分:0)

如果您正在浏览DOM,则很可能不再有标签可供查看。标签现在是DOM中的节点 - 标签中包含的原始内容是您以“字符串形式”访问的全部内容。当然,您可以使用节点信息来重建标签,但它们不会是原始标签(例如,您必须选择<BR><br> - 您将不知道哪个网站最初有)。如果你想从get go中获取原始标记,那么获取你所做的GET / POST返回的原始字节流;不要将其解析为DOM树。