【问题标题】:Bash script to download graphic files from website用于从网站下载图形文件的 Bash 脚本
【发布时间】:2015-03-22 23:17:52
【问题描述】:

我正在尝试在 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;

接下来我能做什么?

【问题讨论】:

  • 您尝试其他链接了吗?
  • 是的,我做到了,即使是一个只有几个 JPG 文件的简单网站。

标签: linux bash curl graphics download


【解决方案1】:

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

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 也没有包含空格的文件夹)。

【讨论】:

    【解决方案2】:

    错误显示: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" ]
    

    【讨论】:

      猜你喜欢
      • 2015-05-25
      • 2019-12-10
      • 2016-05-27
      • 2014-03-14
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多