您的位置:首页 > Web前端 > HTML

Tampermonkey获取渲染后的HTML

2017-12-13 16:56 375 查看
Tampermonkey的官网:http://tampermonkey.net/

由于页面渲染完成的时间不能确定,假设在加载后1秒内渲染完成,输出渲染后的HTML。脚本代码片段如下:

setTimeout(function(){
console.log(document.documentElement.outerHTML);
},1000);


应用:

爬虫、自动化测试等。

由于浏览器功能的限制,脚本不能直接访问系统内的存储设备,它和外界交流的方式好像只有Ajax,但似乎这样就已经足够了。因为只要搭建一个后端与脚本交互(注意解决跨域问题),就能突破这些限制,只是在爬虫的设计上更为复杂。

Tampermonkey脚本已经内置JQuery 1.8.3(查看$().jquery),所以不必引入外面的脚本就能使用JQuery的函数和变量了。

以下是一个手动创建HTML快照的例子:

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/ // @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://*/* // @connect      localhost
// ==/UserScript==

(function() {
'use strict';
function post(url,obj,func){
$.ajax({
type: 'POST',
url: 'http://localhost:8080/'+url,
data: JSON.stringify(obj),
success: func,
contentType: 'application/json; charset=utf-8',
dataType:'json'
});
}

//新建标签页
function jump(url){
$('<a target="_blank"></a>').attr('href',url)[0].click();
}

//在页面加入控制按钮
function add(){
var b=$('<button>快照</button>');
b.prependTo('body');
b.click(function(){
b.remove();
snapshot();
add();
});
}

function snapshot(){
post('',{html:document.documentElement.outerHTML});
}

add();
})();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息