#!/bin/bash read -p "请输入要爬取的页面数(默认为10):" page_num page_num=${page_num:-10} echo $page_num read -p "请输入要保存的目录名称(默认为img):" save_path_name save_path_name=${save_page_name:-"/opt/img"} [ ! -d $save_path_name ]&&mkdir $save_path_name echo $save_path_name for i in `seq 1 $page_num` do base_url="http://www.doutula.com/article/list/?page=${i}" #循环N次,将需要下载的img的url保存到imgurl.txt echo "当前处理第$i个url" curl $base_url | egrep -o '(<img)()*(.*)(data-original=")(.*)"(.*)(>)' | egrep -o '(data-original=")(.*)"' | sed -r 's/" data-backup=.*?//g;s/data-original="//g' >> $save_path_name/imgurl.txt done #计数 file_count=0; #一行一行遍历刚刚保存url的imgurl.txt文件 #sort imgurl.txt | uniq 代表去除重复行 for line in `sort $save_path_name/imgurl.txt | uniq` do #%s 从1970年1月1日00:00:00到目前经历的秒数 ,%N当前时间的纳秒数据 , $(date +%s%N)即秒数 + 纳秒,保证文件名唯一 #curl -o 表示把输出写到该文件中,即指定文件名并写到文件 type=${line##*.} file_name=$(date +%s%N)".$type" file_count=`expr $file_count + 1` echo "当前下载第$file_count个图片" curl -o $save_path_name/$file_name $line done [root@L shells]# vim doutu.sh [root@L shells]# cat doutu.sh #!/bin/bash read -p "请输入要爬取的页面数(默认为10):" page_num page_num=${page_num:-10} echo $page_num read -p "请输入要保存的目录名称(默认为img):" save_path_name save_path_name=${save_page_name:-"/opt/img"} [ ! -d $save_path_name ]&&mkdir $save_path_name echo $save_path_name for i in `seq 1 $page_num` do base_url="http://www.doutula.com/article/list/?page=${i}" #循环N次,将需要下载的img的url保存到imgurl.txt echo "当前处理第$i个url" curl $base_url | egrep -o '(<img)()*(.*)(data-original=")(.*)"(.*)(>)' | egrep -o '(data-original=")(.*)"' | sed -r 's/" data-backup=.*?//g;s/data-original="//g' >> $save_path_name/imgurl.txt done #计数 file_count=0; #一行一行遍历刚刚保存url的imgurl.txt文件 #sort imgurl.txt | uniq 代表去除重复行 for line in `sort $save_path_name/imgurl.txt | uniq` do #%s 从1970年1月1日00:00:00到目前经历的秒数 ,%N当前时间的纳秒数据 , $(date +%s%N)即秒数 + 纳秒,保证文件名唯一 #curl -o 表示把输出写到该文件中,即指定文件名并写到文件 type=${line##*.} file_name=$(date +%s%N)".$type" file_count=`expr $file_count + 1` echo "当前下载第$file_count个图片" curl -o $save_path_name/$file_name $line done