软件应用范围: 看到喜欢的网页,另存为的话,并不能直接保存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'){
            //暂不处理      
        } 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;

}http://www.huiyi8.com/gaoxiaodonghua/xiyouji/

          var saveCssImgFileName = strGmatchResultMD5 + ext;

cssContent = string.replace(cssContent,'<@'+strGmatchResult+'@>',saveCssImgFileName);
            // 根据md5文件名判断没下载过才下载
            if (!io.exist("/data/" + cssFolder + "/" + saveCssImgFileName)) {
                winform.richedit.appendText(imghttpFile + " ||| " + saveCssImgFileName + '\r\n\r');
                imgData,errmsg = whttp.get(imghttpFile);
                if(errmsg == null){
                    string.save("/data/" + cssFolder + "/" + saveCssImgFileName ,imgData);
                }else{
                    winform.richedit.appendText(imghttpFile + " ||| 错误:" + errmsg + '\r\n\r');
                }
                win.delay(100);
            }
        }
    }
    string.save("/data/" + cssFolder + "/" + cssFolder + ".css" ,cssContent);
    winform.richedit.appendText("CSS及图片下载成功,感谢使用!" + '\r\n');
}
 
winform.show() 
win.loopMessage();

css 采集下载的更多相关文章

  1. CSS Spritec下载,精灵图,雪碧图,初探之原理、使用

    CSS Spritec下载,精灵图,雪碧图,初探之原理.使用 关于CSS Sprite CSSSprites在国内很多人叫css精灵雪碧图,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零 ...

  2. 爬虫入门【11】Pyspider框架入门—使用HTML和CSS选择器下载小说

    开始之前 首先我们要安装好pyspider,可以参考上一篇文章. 从一个web页面抓取信息的过程包括: 1.找到页面上包含的URL信息,这个url包含我们想要的信息 2.通过HTTP来获取页面内容 3 ...

  3. js、css引用文件的下载方式

    js.css引用文件的下载方式 一.测试(chrome):1.直接使用<script...>.<link...>标签来混合引入脚本文件和css文件, <script as ...

  4. 常用CSS优化总结——网络性能与语法性能建议

    在前端面试中最常见的问题就是页面优化和缓存(貌似也是页面优化),被问了几次后心虚的不行,平然平时多少会用到一些,但突然问我,很难把自己知道的都说出来.页面优化明显不是一两句能够说完的,这两天总结了一下 ...

  5. html/css基础篇——link和@inport详解以及脚本执行顺序探讨

    先说一说两者之间的异同 两者都可以引用外部CSS的方式,现在主流浏览器两者都支持(ps:@import是CSS2.1提出的),但是存在一定的区别: 1.link是XHTML标签,除了加载CSS外,还可 ...

  6. 动画库Animate.css

    笔记分享: 用法:到官网(http://daneden.github.io/animate.css/),下载animate.min.css文件.点击这里 1.首先引入animate css文件 < ...

  7. JS 和 CSS 的位置对其他资源加载顺序的影响

    JS 和 CSS 在页面中的位置,会影响其他资源(指 img 等非 js 和 css 资源)的加载顺序,究其原因,有三个值得注意的点: JS 有可能会修改 DOM. 典型的,可能会有 document ...

  8. JAVA多线程下载网络文件

    JAVA多线程下载网络文件,开启多个线程,同时下载网络文件.   源码如下:(点击下载 MultiThreadDownload.java) import java.io.InputStream; im ...

  9. (转)常用CSS优化总结——网络性能与语法性能建议

    原文地址:http://www.cnblogs.com/dolphinX/p/3508657.html 在前端面试中最常见的问题就是页面优化和缓存(貌似也是页面优化),被问了几次后心虚的不行,平然平时 ...

随机推荐

  1. PHP性能之语言性能优化:魔术方法好不好?

    魔术方法是什么鬼? 魔术方法,也叫魔鬼函数.只要学过PHP的都知道什么是魔术方法,魔术方法就是在某些条件下自动执行的函数. PHP的魔术方法主要有下面几个,其他的参考PHP官方手册 __constru ...

  2. php 在linux 用file_exists() 函数判断 另外一台服务器映射过来的文件是否存在 总是返回false

    php 在linux 用file_exists() 函数判断 另外一台服务器映射过来的文件是否存在 总是返回false .如下案例 $type="android"; $url=&q ...

  3. php 模拟get和post提交方法[解决ajax跨域问题]

    get: $url = "http://www.111cn.net /index.php?a=b&c=d&e=f&g=" . urlencode('王璐个人 ...

  4. 【整理】Android中EditText中的InputType类型含义与如何定义( 转 )

    转自:[整理]Android中EditText中的InputType类型含义与如何定义 用到的时候查到了这篇文章觉得很不错,就在此记录下. [背景] 经过一些Android中EditText方面的折腾 ...

  5. 编程算法 - 二叉树的最低公共祖先 代码(C)

    二叉树的最低公共祖先 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 二叉树的最低公共祖先(lowest common ancestor), 首先先序遍 ...

  6. WPF 自定义快捷键命令(COMMAND)(转)

    命令简介 WPF 中的命令是通过实现 ICommand 接口创建的.ICommand 公开两个方法(Execute 及 CanExecute)和一个事件(CanExecuteChanged).Exec ...

  7. cmake实战第一篇:初试 cmake

    1.准备工作: 首先,在/code_test 目录下建立一个 cmake 目录,用来放置我们学习过程中的所有练习.(如果以下命令出现xxx: cannot create directory ‘x’:  ...

  8. Android 禁止状态栏下拉

    同学项目用到Android 禁止状态栏下拉,我也迷茫,网上很多资料都不行,最终找到了下面一篇博客,感觉很不错,说的比较详细,供大家参考了 http://blog.csdn.net/u011913612 ...

  9. Delphi 7里Messages.pas里所有104种重定义消息种类,180种不同的消息名称

    Delphi 7里Messages.pas里所有消息.经统计,共104种重定义消息种类,方便使用,180种不同的消息名称.省得像VC里一样,处处自己解析wParam和LParam参数进行分析.有空我要 ...

  10. 3.写一个hello world页面

    经过1和2的学习,现在已经可以正常启动Django了,这一节说怎么写一个hello world页面,所有的环境基础就是1和2中搭建的 1.在app模块中添加页面 具体为 hello_django\he ...