使用phantomjs,可以在解析后访问修改后的DOM的副本。使用cURL调用,您可以访问页面预解析。在预解析的代码中,您可能会发现由浏览器更正的错误。
如何访问后期呈现的更改和预呈现的内容,以便比较浏览器自动执行的修补程序?
对两个文件使用DIFF的最佳方法还是phantomjs保存内容的两个副本,原始和修改后的表单?我似乎找不到正确的方法来通过谷歌和搜索来获得答案:https://stackoverflow.com/search?q=[phantomjs]+save+unaltered+source没有显示任何结果。
出于带宽/效率原因,我想避免再次拨打同一页面。
答案 0 :(得分:1)
无法直接访问PhantomJS中未更改的源(在其他浏览器中称为view-source)。
您可以尝试从PhantomJS缓存中读取页面(使用--disk-cache=true
option运行时),但有一种更简单的方法。您可以简单地发送一个AJAX请求来获取源#34;然后您需要自己处理重定向。
var page = require('webpage').create(),
fs = require('fs');
function get(page, url) {
return page.evaluate(function(url){
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send(null);
return xhr.responseText;
}, url);
}
var url = 'http://example.com';
page.open(url, function(){
var co = get(page, url);
fs.write("original.html", co);
fs.write("rendered.html", page.content);
phantom.exit();
});
您已经可以看到这个简单的脚本,尽管不涉及JavaScript,但这两个文件是不同的。
您可能需要使用--web-security=false
选项运行。您可以直接访问url
,而不是将get()
传递到page.url
函数:
function get(page, url) {
url = url || page.url;
return page.evaluate(function(url){
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send(null);
return xhr.responseText;
}, url);
}