首页 > 学技术 > 技术网文 > Linux Shell > 正文

[保留] 我下載足球報的 shell script


来源 chinaunix.net 酷勤网整理

這個我常用的,很簡單的 shell script ,目的是省回RMB$1.5 ;) ,
#! /bin/bash
url=http://soccer.goalchina.net/dianziban/
temp=$HOME/url.$$
mydir=$HOME/soccer$(date +%Y%m%d)
trap "rm -rf $temp $mydir ; exit 1" 1 2 3 9
lynx --dump $url | sed '/ShowSoccer\./!d;s/  *[0-9][0-9]*\. //' | uniq > $temp 
k=$(<$temp)
   [ -n "$k" ] || exit 1
     while read n ;do wget -P $mydir -c $n ; done < $temp
       j=0
       for i in $mydir/* ;do
           r=${i##*=}.jpg
           mv $i $mydir/$r
           [ $? -eq 0 ] && let "j += 1"
       done
 echo "Total $j pages in $mydir"
rm -f $temp



 mocou 回复于:2005-08-12 09:35:23

show脚本最好注释下。


 zxr1018 回复于:2005-08-12 09:43:43

我等弱小者没看懂啊!麻烦站出来解释解释


 heijude 回复于:2005-08-12 10:37:35

先赞一个!不过最好能俺说说,我头上好多雾啊!


 wudijiansheng 回复于:2005-08-12 13:15:38

顶一下先,正在学习


 hh123456 回复于:2005-08-12 17:35:56

wget -r -np 似乎已经足够了。

省 1.5,可是捧着报纸阅读的悠闲没有了,还得正襟危坐在显示器前面,值吗? :)


 twf_cc 回复于:2005-08-15 22:38:33

對不起,沒給註解。
# 這個是下載的url
url=http://soccer.goalchina.net/dianziban/
# temp file
temp=$HOME/url.$$
# 放置檔案的地方和名稱
mydir=$HOME/soccer$(date +%Y%m%d)
# 中途打斷 script 的處理,拆除未完成的檔案和 temp file
trap "rm -rf $temp $mydir ; exit 1" 1 2 3 9
# 用 lynx 得到檔案的url ,把沒用的過濾掉,如廣告
lynx --dump $url | sed '/ShowSoccer\./!d;s/  *[0-9][0-9]*\. //' | uniq > $temp
# 讀取 temp file
k=$(<$temp)
# 測試 temp file 是否為空,如是,退出
  [ -n "$k" ] || exit 1
# 使用 wget 下載,在 temp file 讀入
    while read n ;do wget -P $mydir -c $n ; done < $temp
#更名和計算頁數
      j=0
      for i in $mydir/* ;do
          r=${i##*=}.jpg
          mv $i $mydir/$r
          [ $? -eq 0 ] && let "j += 1"
      done
# 告知下載完成
echo "Total $j pages in $mydir"
rm -f $temp


 Hex 回复于:2005-08-16 19:43:31

能不能把下面几句再解释详细一点?另外,脚本是如何判别页面中的url的?谢谢!

lynx --dump $url | sed '/ShowSoccer\./!d;s/  *[0-9][0-9]*\. //' | uniq > $temp 

k=$(<$temp)

 while read n ;do wget -P $mydir -c $n ; done < $temp


 twf_cc 回复于:2005-08-20 09:09:42

lynx --dump $url | sed '/ShowSoccer\./!d;s/  *[0-9][0-9]*\. //' | uniq > $temp

利用 lynx --dump 取得 links , 那些 links 含有 ShowSoccer.就是我要下載的,
用 sed 的 regexp '/ShowSoccer\./' 指定, !d 是 sed 的「不要拆除」,相等
于 sed -n '/...../p'  `;' 是sed 用來分隔命令,相等于 sed -e '.......' -e '.......' ,因為lynx --dump 在每個 links 加入了 一個以上的空格和數字,
用 sed 的 s 命令拆除, /  *[0-9][0-9]*\. / 是一個表示式
也可寫成 / \{1,\}[0-9]\{1,\}\. / 
表示一個或以上的空格緊隨一個或以上的數字加一點及一個空格
uniq 把相同的links 不要
k=$(<$temp) 
是 bash 的寫法,等于 k=`cat $temp`,不過沒有呼叫 cat ,理論上
速度快些。
 while read n ;do wget -P $mydir -c $n ; done < $temp
用 while read的方式使 Wget 從 $temp 讀入 links 下載並
存到指定的目錄。


 icesummit 回复于:2005-08-20 11:49:21

8错8错,收藏,学习。


 qzhu 回复于:2005-08-23 03:13:38

minor error:

trap "rm -rf $temp $mydir ; exit 1" 1 2 3 9

kill signal 9 can not be trapped




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=592369
转载请注明作者名及原文出处



收藏本页到: