[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [分享]bat + jscript 批量下载pconline网站桌面壁纸

下载http://wallpaper.pconline.com.cn桌面壁纸,壁纸类型:清新;下载页数:1~2页(共322张)
壁纸类型和页数可更改
  1. @set @n=0;// & cscript -nologo -e:jscript "%~0" & pause & exit/b
  2. var DstFD = 'D:\\壁纸';
  3. var url = 'http://wallpaper.pconline.com.cn';
  4. var arURL = [];
  5. var fso = new ActiveXObject('Scripting.FileSystemObject');
  6. var http = new ActiveXObject('Microsoft.XMLHTTP');
  7. if (!fso.FolderExists(DstFD)) fso.CreateFolder(DstFD);
  8. var re = /class="i-txt".*?(\/pic\/.*?\.html)/ig;
  9. for (var i=1; i<=2; i++) {
  10.         http.Open('GET', url + '/list/1_a86_' + i + '_des1.html',false);
  11.         http.Send();
  12.         var s = GetText(http.responseBody);
  13.         var arr;
  14.         while ((arr = re.exec(s)) != null) {
  15.                 arURL.push(arr[1])
  16.         }
  17. }
  18. var num = 0;
  19. for (i=0; i<arURL.length; i++) {
  20.         http.Open('GET', url + arURL[i], false);
  21.         http.Send();
  22.         var s = GetText(http.responseBody);
  23.         var re1 = /<a target=.+>(.+?)</i;
  24.         var fd = re1.exec(s)[1].replace(/[\/\|\?\*:"<>\s\\]/g, '');
  25.         fd = DstFD + '\\' + fd;
  26.         if (!fso.FolderExists(fd)) fso.CreateFolder(fd);
  27.         var re2 = /"imgSrc":"(http:\/\/.*?)_\d+x\d+(\.jp(e)?g)",/ig;
  28.         while ((arr = re2.exec(s)) != null) {
  29.                 num += 1;
  30.                 arr[1] = arr[1].replace(/\/img\./i, '/img-arch.');
  31.                 try {
  32.                         SaveToFile(arr[1] + arr[2], fd, num);
  33.                 } catch(e) { WScript.Echo('!! 失败 !!') }
  34.         }
  35. }
  36. http = null; fso = null
  37. function GetText(bin) {
  38.         with (new ActiveXObject("ADODB.Stream")) {
  39.                 Type = 1;
  40.                 Mode = 3;
  41.                 Open();
  42.                 Write(bin);
  43.                 Position = 0;
  44.                 Type = 2;
  45.                 Charset = 'GBK';
  46.                 return ReadText();
  47.         }
  48. }
  49. function SaveToFile(strJpgURL, fd, num) {
  50.         var file = strJpgURL.replace(/.+?(\d+\.jp(e)?g)$/i, '$1')
  51.         WScript.Echo(num + '\t下载: ' + fd + '\\' + file);
  52.         http.Open('GET', strJpgURL, false);
  53.         http.Send();
  54.         with (new ActiveXObject('ADODB.Stream')) {
  55.                 Type = 1;
  56.                 Mode = 3;
  57.                 Open();
  58.                 Write(http.responseBody);
  59.                 SaveToFile(fd + '\\' + file, 2);
  60.         }
  61. }
复制代码
1

评分人数

    • CrLf: 感谢分享技术 + 1

我发现直接保存为js也能用= =

TOP

回复 2# bailong360


    是的,不过要把wscript.echo 去掉

TOP

本帖最后由 apang 于 2014-10-12 13:39 编辑

一楼本打算发下载zol中关村壁纸的,但代码写出来感觉好长,又罗嗦,权当练手吧。
如果有人能指点一二,感激不尽。
  1. @set @n=0;// & cscript -nologo -e:jscript "%~0" & pause & exit/b
  2. var DstFD = 'D:\\壁纸';
  3. var url = 'http://desk.zol.com.cn';
  4. var arURL = [[],[]];  //定义二维数组
  5. var fso = new ActiveXObject('Scripting.FileSystemObject');
  6. var http = new ActiveXObject('Microsoft.XMLHTTP');
  7. //创建目录
  8. if (!fso.FolderExists(DstFD)) fso.CreateFolder(DstFD);
  9. //获取屏幕分辨率
  10. var WH = GetScreenPixel();
  11. var re = /href="(\/bizhi\/.+?\.html)".+?alt="(.+?)"/ig;
  12. //循环2次,下载第1~2页
  13. for (var i=1; i<=2; i++) {
  14.         //壁纸分类:全部;壁纸列表:按推荐数
  15.         http.Open('GET', url + '/pc/good_' + i + '.html', false);
  16.         http.Send();
  17.         var s = GetText(http.responseBody);
  18.         var arr;
  19.         while ((arr = re.exec(s)) != null) {
  20.                 //格式化子目录名
  21.                 arr[2] = arr[2].replace(/[\/\|\?\*:"<>\s\\]/g, '');
  22.                 arURL[0].push(arr[1]);  //html地址放在数组第1维
  23.                 arURL[1].push(arr[2]);  //子目录名称放在数组第2维
  24.         }
  25. }
  26. var num = 0;
  27. var re = /href="(\/bizhi\/.+?)".+?"(http:[^=]+?144x90\/\d+\.jp(e)?g)"/ig;
  28. for (i=0; i<arURL[0].length; i++) {
  29.         var fd =  DstFD + '\\' +arURL[1][i];
  30.         //创建子目录
  31.         if (!fso.FolderExists(fd)) fso.CreateFolder(fd);
  32.         http.Open('GET', url + arURL[0][i], false);
  33.         http.Send();
  34.         var s = GetText(http.responseBody);
  35.         while ((arr = re.exec(s)) != null) {
  36.                 num += 1;
  37.                 try {
  38.                         http.Open('GET', url + arr[1], false);
  39.                         http.Send();
  40.                         var s1 = GetText(http.responseBody);
  41.                         //替换网址中的字符144x90
  42.                         arr[2] = arr[2].replace(/144x90/i, GetJpgPixel(s1));
  43.                         SaveToFile(arr[2], fd, num);
  44.                 } catch(e) { WScript.Echo(num + ' !! 失败 !!') }
  45.         }
  46. }
  47. http = null; fso = null
  48. function GetText(bin) {
  49.         with (new ActiveXObject("ADODB.Stream")) {
  50.                 Type = 1;
  51.                 Mode = 3;
  52.                 Open();
  53.                 Write(bin);
  54.                 Position = 0;
  55.                 Type = 2;
  56.                 Charset = 'GB2312';
  57.                 //删除“猜您喜欢”以下的内容
  58.                 return ReadText().split('<!--猜您喜欢-->')[0];
  59.         }
  60. }
  61. //获取当前屏幕分辨率
  62. function GetScreenPixel() {
  63.         var locator = new ActiveXObject('WbemScripting.SWbemLocator');
  64.         var service = locator.ConnectServer('.');
  65.         var p = service.ExecQuery('SELECT * FROM Win32_DesktopMonitor');
  66.         var e = new Enumerator(p);
  67.         for (; !e.atEnd(); e.moveNext()) {
  68.                 var w = e.item().ScreenWidth;
  69.                 var h = e.item().ScreenHeight;
  70.         }
  71.         return(w + 'x' + h)
  72. }
  73. //查找适合屏幕分辨率的JPG,如果找不到,取列表中的第一项(最大分辨率)
  74. function GetJpgPixel(txt) {
  75.         var re = new RegExp('\\bid="' + WH + '"', 'i');
  76.         if (txt.split(re).length == 1) {
  77.                 return(/\bid="(\d+x\d+)"/i.exec(txt)[1]);
  78.         } else return(WH)
  79. }
  80. //下载、保存JPG
  81. function SaveToFile(strJpgURL, fd, num) {
  82.         var file = strJpgURL.replace(/.+?(\d+\.jp(e)?g)$/i, '$1')
  83.         WScript.Echo(num + ' 下载:' + fd + '\\' + file);
  84.         http.Open('GET', strJpgURL, false);
  85.         http.Send();
  86.         with (new ActiveXObject('ADODB.Stream')) {
  87.                 Type = 1;
  88.                 Mode = 3;
  89.                 Open();
  90.                 Write(http.responseBody);
  91.                 SaveToFile(fd + '\\' + file, 2);
  92.         }
  93. }
复制代码

TOP

返回列表