如何拍摄wep页面的DOM结构快照?

时间:2010-10-06 10:51:19

标签: php html dom

我需要在不同的点上比较网页的DOM结构。有哪些方法可以检索和快照它。

我需要服务器端的DOM进行处理。

我基本上需要跟踪网页的结构变化。例如删除div标签或插入p标签。不应将这些标签上的数据(innerHTML)更改视为差异。

3 个答案:

答案 0 :(得分:4)

$html_page = file_get_contents("http://awesomesite.com");
$html_dom = new DOMDocument();
$html_dom->loadHTML($html_page);

使用PHP DOM。非常简单,实际上使用起来有点乐趣。 Reference

编辑:澄清后,更好的答案是here

答案 1 :(得分:2)

在服务器端执行以下步骤:

  • 通过HTTP GET
  • 检索网页的快照
  • 保存具有不同名称的页面的连续快照以供以后比较
  • 使用支持HTML的差异工具比较文件(请参阅HtmlDiff tool listing page on ESW wiki)。

作为Linux shell的概念验证示例,您可以按如下方式执行此比较:

wget --output-document=snapshot1.html http://example.com/
wget --output-document=snapshot2.html http://example.com/
diff snapshot1.html snapshot2.html

您当然可以将这些命令包装到服务器端程序或脚本中。

对于PHP,我建议你看一下daisydiff-php。它提供了一个PHP类,使您可以轻松创建一个支持HTML的diff工具。例如:

<?
require_once('HTMLDiff.php');
$file1 = file_get_contents('snapshot1.html');
$file2 = file_get_contents('snapshot1.html');
HTMLDiffer->htmlDiffer( $file1, $file2 );
?>

请注意,使用file_get_contents,您也可以从给定的网址中检索数据。

请注意,DaisyDiff本身为very fine tool for visualisation of structural changes as well

答案 2 :(得分:1)

如果你使用firefox,firebug可以让你查看任何网页的DOM结构。