aardio取网页里图片base64数据另存为图片
编辑时间:2021-06-01 作者:金满斗 浏览量:4016 来源:原创

群里的一个人问的。其实直接用wb.querySelector 取下来转换很简单的。

他用的chrome.driver,通过js取出来的,怎么保存图片都是黑框框。

仔细比较了下文本里带%OA,网页上默认的是没有的,应该是url编码的问题,试着用aardio里面的inet.url库里带的函数来解码。解了还是不行。

算了,只有魔法才能打败魔法,既然是js里编码的事情,那就还是js去解吧。

脚本里加上一段解码函数。OK了。

上代码吧。


import win.ui;
import console;
import chrome.driver;
import crypt.bin;
import inet.url;
/*DSG{{*/
mainForm = win.form(text=
"aardio form";right=973;bottom=619)
mainForm.add(
button={cls=
"button";text="Button";left=862;top=75;right=945;bottom=109;z=2};
custom={cls=
"custom";text="自定义控件";left=35;top=76;right=793;bottom=565;z=1}
)
/*}}*/

driver = chrome.driver();
var browser = driver.startBrowser();
browser.go(
"http://tysfrz.pt.ouchn.cn/lyuapServer/login?service=http%3A%2F%2Fmenhu.pt.ouchn.cn%2F%23%2F&tdsourcetag=s_pcqq_aiomsg");


//wb.wait(".index-captcha-2FKeU",3000);

/*
var codestr= wb.querySelector(".index-captcha-2FKeU>img").src;

*/


getimg = 
function(){
    
var codejs="return decodeURI(document.querySelector('div.index-captcha-2FKeU>img').src)";
    
var codestr= browser.doScript(codejs);
    
if(codestr){
        base64 = string.replace(codestr,
"^data\:image\/(\w+);base64,""");
        
var bmp = crypt.bin.decodeBase64(base64);
        string.save(
"\www1.png",bmp);   
    }
}


mainForm.button.oncommand = 
function(id,event){
    getimg();
}

mainForm.show();
return win.loopMessage();


注释的是web里面的直接写法。


来说两句吧