Cào theo trình tự thời gian gửi ảnh kiểu như thế này dễ bị trùng ảnh và phải bổ sung một số ảnh ở cuối nếu như danh sách “Last uploads” có thay đổi (chắc chắn sẽ có). Bù lại, nó sẽ nhanh hơn cách tải theo PID. Nhưng khi bổ sung sau lần tải đầu tiên này thì lại nên tải theo PID cho tiện.
#! /bin/sh # Cào photoworld.com.vn. Cách 1: Tải theo "Last uploads" d='http://www.photoworld.com.vn'; for i in `seq 0 6415`; do wget "$d"/index.php?name=coppermine\&file=displayimage\&meta=lastup\&cat=0\&pos="$i" -O o.html; f=`less o.html |\ grep 'modules\/coppermine\/albums\/userpics' |\ sed -r -e "s#^.*src=\"#$d/#"\ -e 's/" width=".*$//'\ -e 's#/normal_#/#'`; t=`less o.html |\ grep 'modules\/coppermine\/albums\/userpics' |\ sed -r -e 's/^.* alt="(.*)/\1/'\ -e 's/" title="".*/\[NO DESCRIPTIONS\]/'`; p=`less o.html |\ grep 'nowrap>URL:' |\ sed -r 's#^.*pid=([0-9]+)</a></td></tr>#\1#'`; echo "NOW: pos=$i; pid=$p"; wget -p "$f"; rm -f o.html; echo `date +%F\ %T`" - PID: $p - FILE: $f - DESC: $t" >> log.txt; done
BỔ SUNG: Cào photo.com.vn
Bên photo.com.vn đòi phải đăng nhập mới cho xem. Định dùng --keep-session-cookies
nhưng chẳng hiểu tại sao lại không được. Thôi thì đành đăng kí đại một cái tài khoản rồi dùng Firefox đăng nhập, cuối cùng là lấy cookie của trang này ra riêng một chỗ cho wget nó --load-cookies
. Hơi củ chuối tẹo, nhưng chả biết làm thế nào khác.
#! /bin/sh # Cào photo.com.vn. Cách 2: Tải theo PID # Cần chắc chắn là đã đăng nhập bằng Firefox # và các cookie chưa bị hết hạn grep 'photo.com.vn' `find ~/.mozilla/firefox/ -name cookies.txt` > ck.txt d='http://www.photo.com.vn' for i in `seq 0 26066`; do wget --load-cookies=ck.txt "$d/coppermine/displayimage/cat=0/pid=$i.html" -O o.html f=`grep -m 1 'modules\/coppermine\/albums\/userpics' o.html |\ sed -r -e "s#^.*src=\"#$d/#"\ -e 's/" width=".*$//'\ -e 's/normal_//'`; if [ $f ]; then t=`grep -m 1 'modules\/coppermine\/albums\/userpics' o.html |\ sed -r -e 's/^.* alt="(.*)/\1/'\ -e 's/" title="".*/\[NO DESCRIPTIONS\]/'`; echo "NOW DOWNLOADING PID: $i"; wget -p "$f"; else echo "$i is NOT found OR removed!!!"; f='[ NOT found OR removed ]'; t=''; fi rm -f o.html; echo `date +%F\ %T`" - PID: $i - FILE: $f - DESC: $t" >> log.txt; done
Bình luận