zoukankan      html  css  js  c++  java
  • pyppeteer获取图片base64

    首先尝试这么用:

    #     fulljs = """
    #         () => { return document.getElementsByClassName("geetest_canvas_fullbg")[0].toDataURL("image/png") }
    #         """
    #     fadejs = """
    #         () => { 
    #                 return document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].toDataURL("image/png")}
    #         """

    会有异常 ailed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported

    TypeError: document.getElementsByClassName(...)[0].toDataURL is not a function

    看这一篇

    https://www.cnblogs.com/Renyi-Fan/p/9588755.html

    # -*- coding: utf-8 -*-
    import base64
    import os
    import sys
    import json
    import asyncio
    import time
    import numpy as np
    import cv2
    from pyppeteer import launch
    from PIL import Image, ImageChops
    import matplotlib.pyplot as plt
    
    
    async def main():
        browser = await launch(headless=False,autoClose=False, args=['--disable-infobars'])
        captcha_url = 'http://search.fang.com/captcha-40a1371b84c30293be/?t=1620803648.855&h=aHR0cHM6Ly9lc2YuZmFuZy5jb20vaG91c2UvaTMxNT9yZnNzPTItM2ExZjhlMDU0ZmJhMDE5MTQ5LTBi&c=cmE6MTEyLjEyLjE2LjIyO3hyaTo7eGZmOg%3D%3D#'
        
        page1 = await browser.newPage()
        await page1.goto(url=captcha_url)
    
    
        dimensions = await page1.evaluate(pageFunction='''() => {
            var canvas=document.createElement("canvas"),//获取canvas
                ctx = canvas.getContext("2d"), //对应的CanvasRenderingContext2D对象(画笔)
                img = new Image(),//创建新的图片对象
                base64 = '' ;//base64 
            img.src = document.getElementsByClassName("img-block")[0].src;
            img.setAttribute("crossOrigin",'Anonymous');
            img.onload = function(){//图片加载完,再draw 和 toDataURL
                ctx.drawImage(img,0,0);    
                base64 = canvas.toDataURL("image/png"); 
            };
            var dataURL=canvas.toDataURL("image/png");
            return {aa:dataURL}
            }''', force_expr=False)  # force_expr=False  执行的是函数
        print(dimensions)
    
    
     
    if __name__ == '__main__':
        asyncio.get_event_loop().run_until_complete(main())
  • 相关阅读:
    css之隐藏内容的方法
    字符串对象的各种方法
    javascript之自增自减典型运算(易错)
    Fuel 30 分钟快速安装OpenStack
    使用Sublime Text 3做Python开发
    Ubuntu 14.04.02 安装openvswitch-2.3.1
    linux 技巧:使用 screen 管理你的远程会话
    MQTT的学习研究(十七)Mosquitto简要教程(安装&使用)
    MQTT的学习研究(十六) MQTT的Mosquitto的window安装部署
    MQTT的学习研究(十五) MQTT 和android整合文章
  • 原文地址:https://www.cnblogs.com/yansc/p/15576684.html
Copyright © 2011-2022 走看看