shell爬取斗图网

#!/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

猜你喜欢

转载自www.cnblogs.com/ray-mmss/p/10119461.html