Php 如何拍摄wep页面的快照';什么是DOM结构?

Php 如何拍摄wep页面的快照';什么是DOM结构?,php,html,dom,Php,Html,Dom,我需要比较一个网页在不同点上的DOM结构。检索和快照它的方法有哪些 我需要服务器端的DOM进行处理 我基本上需要跟踪网页的结构变化。例如删除div标记或插入p标记。更改这些标记上的数据(innerHTML)不应被视为区别 $html_page = file_get_contents("http://awesomesite.com"); $html_dom = new DOMDocument(); $html_dom->loadHTML($html_page); 它使用PHPDOM。非常简

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

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


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

$html_page = file_get_contents("http://awesomesite.com");
$html_dom = new DOMDocument();
$html_dom->loadHTML($html_page);
它使用PHPDOM。非常简单,实际上使用起来有点有趣


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

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

  • 通过HTTP GET检索网页的快照
  • 使用不同的名称保存页面的连续快照,以供以后比较
  • 将这些文件与支持HTML的diff工具进行比较(请参阅)
作为Linux shell的概念验证示例,您可以按如下方式执行此比较:

wget --output-document=snapshot1.html http://example.com/
wget --output-document=snapshot2.html http://example.com/
diff snapshot1.html snapshot2.html
当然,您可以将这些命令包装到服务器端程序或脚本中

对于PHP,我建议您看看。它提供了一个PHP类,使您能够轻松创建一个支持HTML的差异工具。例如:

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

请注意,使用
file\u get\u contents
,您还可以从给定的URL检索数据


请注意,DaisyDiff本身就是。

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

您需要将DOM返回到服务器端吗?另外,您只需要HTML还是整个DOM?您是否需要从当前浏览器页面捕获DOM,或者通过其URL重新请求页面就足够了?我需要DOM,它需要是数据不可知的。您所说的“数据不可知”是什么意思?数据不可知是指不关心数据。我只需要比较一下结构。不是整个HTML文档。很好!那么如何比较两个DOM对象呢?我基本上需要跟踪网页的结构变化。例如删除div标记或插入p标记。更改这些标记上的数据(innerHTML)不应被视为一种区别。那么,您应该使用这些数据更新您的问题,因为这超出了您原来的问题范围。我可以很容易地告诉您如何检索DOM,但是我不知道如何比较DOM。我很可能会在基于上一个实例的递归函数中迭代它。@Codeacula:比较DOM的一个“简单”方法可能是迭代DOM,以纯文本格式输出节点,然后使用diff?如果没有得到答案,一个“简单”的方法是使用一个现成的工具,如
diff
,并将输出加载到程序中。我不希望对实际数据进行更改,而是远程检索并跟踪更改。感谢您提供更多信息。我相应地改变了答案。关键是,同样的方法也适用于服务器端纯处理。PHP,我提到它是一个标记,我想我应该更清楚。我很钦佩你的奉献精神来帮助我。虽然我正在与一个奇怪的“无记忆”错误作斗争,但我必须说,我现在使用这个工具走上了正确的轨道。只是一张便条。该工具的实际解析语法是
HTMLDiffer->HTMLDiffer($file1,$file2)感谢您的语法更正。祝你这项工作好运。此外,如果您再次遇到麻烦,请询问更多详细信息或提出新问题!我知道,但我需要在应用程序中实现并处理它。