zoukankan      html  css  js  c++  java
  • css 采集下载

    软件应用范围: 看到喜欢的网页,另存为的话,并不能直接保存css中引用的图片。 那么就有了本软件的用武之地。 
    亮点:自动匹配文件内的相对路径、css内图片地址值md5保存,用来避免不同文件夹同名文件的重复尴尬。
    ​1. [代码]AAuto 代码    
    import win.ui;
    import inet.url;
    import inet.whttp
    import string.md5;
    import web.form;
    import fsys;
    import win.ui.statusbar;
    /*DSG{{*/
    winform = ..win.form( right=587;bottom=400;max=false;text="CSS采集精灵";border="dialog frame";parent=...)
    winform.add( 
    btnDown={ bottom=71;text="下载";left=492;top=12;z=4;right=580;cls="button" };
    richedit={ vscroll=1;right=580;left=8;multiline=1;top=80;z=3;bottom=372;edge=1;cls="richedit" };
    groupbox={ bottom=67;right=482;left=7;top=7;z=1;text="CSS HTTP网址";edge=1;cls="groupbox" };
    cssUrl={ bottom=55;right=471;left=14;top=26;z=2;edge=1;cls="edit" }
    )
    /*}}*/
     
    status = win.ui.statusbar(winform);
    status.addItem(" AAuto 感谢有你,新年快乐!",280);
    status.addItem(" Author:时代网络。QQ:87059222 ");
     
    // 赋值测试css地址
    winform.cssUrl.text = "http://www.aau.cn/data/cache/style_1_common.css?U0g";
     
    winform.btnDown.oncommand = function(id,event){
        if(winform.cssUrl.text == ""){
            winform.msgbox("CSS文件地址不能为空!","CSS采集精灵");
                return ; 
        }
        var cssFile = winform.cssUrl.text;
        var tCssPath = io.splitpath(cssFile);
         
        //获取当前时间
        t_now=..time.now();
        t_now.format=" %Y年%m月%d日 %H-%M-%S";
        t_now = tostring(t_now);
        var cssFolder = string.replace(tCssPath.name,"[&%?]","_") + t_now;
        if(!io.exist("/data/" + cssFolder) ){
            fsys.createDir("/data/" + cssFolder)
        }
     
        var whttp = inet.whttp();
        cssContent,errmsg = whttp.get(cssFile);
        if(errmsg != null){
            winform.msgbox("CSS文件下载出现错误," + errmsg + "!","CSS采集精灵");
            return ; 
        }
        if (cssContent==null){
            winform.msgbox("CSS文件内容为空或者下载异常!","CSS采集精灵");
            return ; 
        }
        var regexExpression = "url((.*?))";
        for strGmatchResult in string.gmatch( cssContent, regexExpression ){
            if(string.find(strGmatchResult,'data:image') || strGmatchResult=='about:blank'){
                //暂不处理      http://www.huiyi8.com/clxgt/​
            } else {窗帘效果图
                strGmatchResult =  string.replace(strGmatchResult,"""","");
                // 处理相对路径图片网址
                imghttpFile =  inet.url.joinpath(cssFile,strGmatchResult);
                // 将图片网址md5处理,防止重复下载以及文件同名不同参下载覆盖冲突,用md5取值都是唯一了。
                strGmatchResultMD5 = string.md5(imghttpFile,true); 
                 
                // http://hi.bdimg.com/static/qhome/css/home/n0001/home_datauri.css?v=bbdea37b.css
                // 针对css内 带参数图片文件,分离出真是后缀名。有更好的写法请指点哦
                // 如 "tpl_n0001_theme_001_background.jpg?v=30ab89f5.gif";
                var tpath = io.splitpath(strGmatchResult);
                var file = tpath.file;
                if(string.find(file,"?")){
                    ext = io.splitpath(string.split(file,'?')[1]).ext;
                }else {
                    ext = tpath.ext;
                }
     
                var saveCssImgFileName = strGmatchResultMD5 + ext;
                cssContent = string.replace(cssContent,'<@'+strGmatchResult+'@>',saveCssImgFileName);
                // 根据md5文件名判断没下载过才下载
                if (!io.exist("/data/" + cssFolder + "/" + saveCssImgFileName)) {
                    winform.richedit.appendText(imghttpFile + " ||| " + saveCssImgFileName + ' ');
                    imgData,errmsg = whttp.get(imghttpFile);
                    if(errmsg == null){
                        string.save("/data/" + cssFolder + "/" + saveCssImgFileName ,imgData);
                    }else{
                        winform.richedit.appendText(imghttpFile + " ||| 错误:" + errmsg + ' ');
                    }
                    win.delay(100);
                }
            }
        }
        string.save("/data/" + cssFolder + "/" + cssFolder + ".css" ,cssContent);
        winform.richedit.appendText("CSS及图片下载成功,感谢使用!" + ' ');
    }
     
    winform.show() 
    win.loopMessage(); 

  • 相关阅读:
    ThinkPHP 3.2.2 实现持久登录 ( 记住我 )
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 17 电话号码的字母组合
  • 原文地址:https://www.cnblogs.com/xkzy/p/3927637.html
Copyright © 2011-2022 走看看