Javascript 如何通过phantomjs访问未更改的页面源
使用phantomjs,可以在解析后访问修改过的DOM的副本。使用cURL调用可以访问预解析页面。在预解析的代码中,您可能会发现由浏览器更正的错误 如何访问渲染后的更改和渲染前的内容,以比较浏览器自动执行的修复 对这两个文件使用DIFF是最好的方法,还是phantomjs保存了内容的两个副本,即原始表单和修改表单?我似乎找不到正确的方式来表达这句话,通过谷歌和这里的搜索得到答案:没有找到任何结果Javascript 如何通过phantomjs访问未更改的页面源,javascript,curl,phantomjs,diff,Javascript,Curl,Phantomjs,Diff,使用phantomjs,可以在解析后访问修改过的DOM的副本。使用cURL调用可以访问预解析页面。在预解析的代码中,您可能会发现由浏览器更正的错误 如何访问渲染后的更改和渲染前的内容,以比较浏览器自动执行的修复 对这两个文件使用DIFF是最好的方法,还是phantomjs保存了内容的两个副本,即原始表单和修改表单?我似乎找不到正确的方式来表达这句话,通过谷歌和这里的搜索得到答案:没有找到任何结果 出于带宽/效率原因,我希望避免再次调用同一页面。无法直接访问PhantomJS中未更改的源代码(在其
出于带宽/效率原因,我希望避免再次调用同一页面。无法直接访问PhantomJS中未更改的源代码(在其他浏览器中称为查看源代码) 您可以尝试从PhantomJS缓存读取页面(使用运行时),但有一种更简单的方法。您可以简单地发送一个AJAX请求以“在线”获取源代码,但是您需要自己处理重定向
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
选项运行。您可以直接访问page.url
,而不是将url
传递到get()
函数中:
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);
}
我可能没有读过这篇文章,但我认为这是关于JS修改DOM的。我不太关心JS的修改,更关心的是浏览器是否关闭打开的标记或缩短到例如-我知道浏览器中有下拉副本的选项,但它是一个修改过的副本。从那篇文章中还不清楚是否有可能达到这个目的。你是说电线上有什么。不,在PhantomJS中没有办法得到它,但是您可以发出ajax请求,只需再次获得页面即可。@ArtjomB。我一点也没有想到这一点。你能简单地从上下文中再次请求整个页面的原始html并保存原始字符串吗?嗨,Artjom B,这看起来正是我需要的。对我来说,这是一个完美的答案。