免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3995 | 回复: 5

多进程批量下载ubuntu官方壁纸 [复制链接]

论坛徽章:
0
发表于 2010-08-10 13:28 |显示全部楼层
本帖最后由 paktc 于 2010-08-10 13:32 编辑

批量下载ubuntu官方壁纸-自然系列

我是在windows下写的,需要借助wget命令。 不过我想移到linux改一下应该也OK。

分析地址的时候设置了一个递增数 % 3 ,如果=0就当前下载 ,其余的另开进程下载,
当前下载可以达到缓冲不炸窗口的作用。 3也就是个关键数字了。

  1. foreach $number (51..63) {
  2.   system("wget --output-document link.html http://art.gnome.org/backgrounds/nature?page=$number");
  3.   open READ,"link.html";
  4.   @lines=<READ>;
  5.   close READ;
  6.   $rcd="#";
  7.   $http="http://ftp.gnome.org/pub/GNOME/teams/art.gnome.org/backgrounds/";
  8.   $i=0;
  9.   foreach (@lines) {
  10.    if (s#.*<option value="/backgrounds/nature/\d*/##i) {
  11.          s#">##;
  12.          @tmp=split("_",$_);
  13.          next if ($rcd eq $tmp[0]);
  14.          $rcd=$tmp[0];
  15.          $i+=1;   $pan=$i % 3;
  16.          if ($pan == 0) {
  17.             system("wget -nc $http$_ ");
  18.          } else {
  19.             system("start /min wget -nc $http$_");
  20.          }
  21.    }
  22.   }
  23. }
  24. print "OVER";
  25. <STDIN>;
复制代码
还有个细节是我记录了名字的某个部分
因为一个页面中有同张图片的不同分辨率的链接,比如
“NATURE-BalconVert_1024x768.jpg"
“NATURE-BalconVert_1900x1250.jpg"
避免同一张图,做了遇到同样标题调过的处理

论坛徽章:
0
发表于 2010-08-10 14:06 |显示全部楼层
我跑到ubuntu下面来试了,好像下载速度本来就很慢阿……
改了代码

  1. #!/usr/bin/perl
  2. foreach $number (51..63) {
  3.   system("wget --output-document link.html http://art.gnome.org/backgrounds/nature?page=$number");
  4.   open READ,"link.html";
  5.   @lines=<READ>;
  6.   close READ;
  7.   $rcd="#";
  8.   $http="http://ftp.gnome.org/pub/GNOME/teams/art.gnome.org/backgrounds/";
  9.   $i=0;
  10.   foreach (@lines) {
  11.    if (s#.*<option value="/backgrounds/nature/\d*/##i) {
  12.          s#">##;
  13.          @tmp=split("_",$_);
  14.          next if ($tmp[0]=~/$rcd.*/);
  15.          $rcd=$tmp[0];
  16.          $i+=1;   $pan=$i % 3;
  17.          if ($pan == 0) {
  18.             system("wget -nc $http$_ ");
  19.          } else {
  20.             system("gnome-terminal --zoom=0.1 -e \"wget -nc $http$_\"");
  21.          }
  22.    }
  23.   }
  24. }
  25. print "OVER";
  26. <STDIN>;
复制代码

论坛徽章:
0
发表于 2010-08-10 14:47 |显示全部楼层
额···这个不算多线程吧···

论坛徽章:
0
发表于 2010-08-10 15:13 |显示全部楼层
本帖最后由 paktc 于 2010-08-10 15:15 编辑

回复 3# wfnh


    哈哈,所以我很明确的写了标题:多进程
    就是怕有人说我…… 啊 。线程这个词就高了

主要是壁纸真的不错,推荐~  :wink:

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
发表于 2010-08-10 16:05 |显示全部楼层
只用perl抓过学校BBS的plmm板块的图片,

自然类。。。

最好用perl自己的模块做吧,看老大的这个回复

http://bbs.chinaunix.net/viewthr ... ;page=1#pid10017536

论坛徽章:
0
发表于 2010-08-10 17:23 |显示全部楼层
回复 5# ttcn_cu


   原来perl自己有下载函数啊,我只学了基本操作,果然井底之蛙啊。  下班后探索探索
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP