引用了shell多线程的方法,每次下载五个剧照并命名。

#/bin/bash



# 设置并发的进程数
thread_num=5


a=$(date +%H%M%S)




# mkfifo
tempfifo="my_temp_fifo"
mkfifo ${tempfifo}
# 使文件描述符为非阻塞式
exec 6<>${tempfifo}
rm -f ${tempfifo}


# 为文件描述符创建占位信息


for ((i=1;i<=${thread_num};i++))
do
{
    echo
}
done >&6


echo "==========================="
for i in `seq 0 25 249`;do
   movename=`curl https://movie.douban.com/top250?start=$i |grep '<img width="100"'|awk -F '"' '{print $4}'|sed s/[[:space:]]//g`
   pictureurl=`curl https://movie.douban.com/top250?start=$i |grep '<img width="100"'|awk -F '"' '{print $6}'`
   move=($movename)
   picture=($pictureurl)
   for(( i=0;i<${#move[@]};i++)) do
   {
       echo "%%%%"
       read -u6
       {
           #sleep 1
           wget -O ${move[i]} ${picture[i]}
           echo "" >&6
       } &
    }
    done
done


    wait


# 关闭fd6管道
    exec 6>&-


b=$(date +%H%M%S)


echo -e "startTime:\t$a"

echo -e "endTime:\t$b"


抓取豆瓣top250电影剧照

shell多线程方法建此博客。

https://www.cnblogs.com/signjing/p/7074778.html

有时间研究下如何抓取一个豆瓣用户的电影品味,顺便研究下shell的代理。

相关文章: