假设我有一些 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 调用等)然后尝试使用 Zombie或 Phantom .另见 Mink用于支持 Zombie 的 PHP 工具。
一般搜索带有 JavaScript 引擎的 headless 浏览器。
与人们在这里的其他答案中所写的相反,这实际上是可能的。
关于php - 查看javascript生成的html页面的实际html源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700171/