Bash脚本从网站下载图形文件

时间:2015-03-22 23:17:53

标签: linux bash curl graphics downloading

我试图在Linux(Debian)中编写bash脚本,用于在启动期间从用户提供的网站下载图形文件。我不确定我的代码是否正确,但首先问题是当我尝试使用网站运行我的脚本时,例如http://www.bbc.com/错误显示:http://www.bbc.com/ : invalid identifier。我甚至尝试过一个只有几个JPG文件的简单网站。我的下一个问题是找出如何从包含互联网地址图像的.txt文件下载文件。

#!/bin/bash
# $1 - URL        $2 - new catalog name
read $1 $2
url=$1
fold=$2
mkdir -p $fold

if [$# -ne 3];
then
echo "Wrong command"
exit -1
fi

curl $url | grep -o -e "<img src=\".*\"+>" > img_list.txt |wc -l img_list.txt |  lin=${% *}

baseurl=$(echo $url | grep -o "https?://[a-z.]*"")
curl -s $url | egrep -o "<img src\=[^>]*>" | sed 's/<img src=\"\([^"]*\).*/\1/.*/\1/g' >  url_list.txt

sed -i "s|^/|$baseurl/|" url_list.txt
cd $fold;

接下来我该怎么办?

2 个答案:

答案 0 :(得分:0)

从我将要使用的网页下载每张图片:

mech-dump --absolute --images http://example.com | xargs -n1 curl -O

但需要安装WWW::Mechanize包中的mech-dump命令。

使用列表文件

while read -r url folder
do
    mkdir -p "$folder" || exit 1
    (cd "$folder" && mech-dump --absolute --images "$url" | xargs -n1 curl -O)
done < list.txt

(假设没有url,也没有包含空格的文件夹)。

答案 1 :(得分:0)

  

错误显示:http://www.bbc.com/ : invalid identifier

您使用read是错误的;变化

read $1 $2
url=$1
fold=$2

read url fold

或决定在命令行中指定参数并仅省略read $1 $2

此外,[ ]中的每个操作数必须与括号分开;变化

if [$# -ne 3];

if [ -z "$fold" ]