手头上有1万个URL , 尝试用迅雷下载, 结果放在列表中就挂了 ,与同事沟通cat + xargs 能快速实现 .
具体代码如下:
#!/bin/bash# getFile.sh url=$1fileName=$(echo $1 | awk -F'/' '{print $NF}')# echo ${fileName}if [ ! -f ${fileName} ] ; then
# 将图片保存在当前目录下
curl ${url} -o ${fileName} fi
urlList.txt
http://n.sinaimg.cn/news/w105h70/20171204/_0cD-fypikwt6188396.jpghttp://n.sinaimg.cn/news/w105h70/20171204/lWeS-fypikwt6608399.jpghttp://n.sinaimg.cn/sports/transform/w105h70/20171204/W3fY-fypikwt6000765.jpg
执行调用:
cat urlList.txt | xargs -P3 -n1 bash getFile.sh
其中-P3 代表3个并发
检查执行效果 :
ps -ef | grep curl -c
上面是3个并打, 显示为4 ,是应为 grep curl 也计算在内了
缺点:
对于获取失败的数据,没实现记录及重新获取.