php - 查看javascript生成的html页面的实际html源

标签 php javascript html

假设我有一些 javascript 代码,它从包含整个 html 页面的 php 传递一个字符串。我将字符串写入当前文档,然后更改其中一个包含元素。像这样:

<script type="text/javascript">
var foo = <?php echo $html_document;?>;
document.open();
document.write(foo);
document.close();
document.getElementById("some_id_within_html_document").innerHTML = "some stuff";
</script>

这给了我想要的输出,一切看起来都很棒......除非您查看此页面的源代码。如果我想稍后抓取此页面并做同样的事情,它会显示 javascript 而不是浏览器解释的 html。使用这种方法我怎么能抓取所需的 HTML 而不是生成它的 javascript?我已经通过在 php 中处理字符串来规避这个问题,但是我仍然很好奇是否可以在查看源代码/抓取页面时以这种方式显示解释的 HTML。

编辑: 各方面的 react 都很好,我学到了很多关于这里实际发生的事情以及我应该远离的做法。 Justin Wood 给出了与我的原始问题相关的最简单的解决方案。

最佳答案

不确定您要做什么,但您可以使用类似以下内容查看与生成/修改的 DOM 等效的 HTML:

document.documentElement.innerHTML

或:

document.getElementById("some_id").innerHTML

参见 DEMO .

您可以 create a bookmarklet包括这段代码:

alert(document.documentElement.innerHTML);

在您查看的每个页面上查看由 JavaScript 修改的 DOM 的 HTML。

更新:

如果你想在你的服务器上做一些网络抓取,你想下载一些外部网页,执行它的JavaScript,然后看到对应的HTML执行 JavaScript 后的 DOM(使用 document.write 调用等)然后尝试使用 ZombiePhantom .另见 Mink用于支持 Zombie 的 PHP 工具。

一般搜索带有 JavaScript 引擎的 headless 浏览器。

与人们在这里的其他答案中所写的相反,这实际上是可能的。

关于php - 查看javascript生成的html页面的实际html源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700171/

相关文章:

php - Drupal,如何通过 RESTful Web 服务公开特定节点数据而无需身份验证

php - 使用递归查找用户是否是另一个用户php mysql的推荐人

javascript - TinyTable 排序器得到一个未定义的

javascript - 表达错误 [ERR_HTTP_HEADERS_SENT] : Cannot set headers after they are sent to the client

javascript - 如何计算JavaScript中多个数组的交集?什么是 [等于 : function] mean?

html - 垂直滚动在 iOS 上不起作用,但在 Android 上运行良好

html - 无法从 Z 轴翻转 SVG 圆

javascript - 如何在新的 Google Calendar v3 API 结果上使用 PHP 的 'json_decode'?

php - 使用 join 更新语句

jquery - slider 高度技术