這個我常用的,很簡單的 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
|