• Tampermonkey获取渲染后的HTML


    Tampermonkey的官网:http://tampermonkey.net/

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

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

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

    很多网页都引入了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();
    })();
    
  • 相关阅读:
    泛型的内部原理:类型擦除以及类型擦除带来的问题
    Redis的那些最常见面试问题
    线程池全面解析
    对线程调度中Thread.sleep(0)的深入理解
    集群环境下Redis分布式锁
    3.8
    3.7
    3.6任务
    3.5任务
    3.4
  • 原文地址:https://www.cnblogs.com/marklove/p/15811480.html
Copyright © 2020-2023  润新知