1

Я пытаюсь загрузить коллекцию файлов с веб-сайта. Где коллекция взята из "TAGS". Я попытался использовать много комбинаций сценариев wget и bash scripts но безуспешно. Каждый файл вложен в свою собственную веб-страницу, и кажется, что сайт использует .htaccess и URL rewriting для обработки перенаправления ссылок. Есть ли способ сделать это, сохранив структуру dir?

home
   ├──Foo
   │  ├──paul.mp3
   │  ├──saul.mp3
   │  ├──micheal.mp3
   │  ├──ring.mp3
   ├──Bar
      ├──nancy.mp3
      ├──jan.mp3
      ├──mary.mp3

Я пробовал вариации

wget -m -x -e robots=off --no-parent --accept "*.mp3" http://example.com

Но не имеют успеха.

РЕДАКТИРОВАТЬ

После использования различных комбинаций wget с различными параметрами -m -r -spider. Я не смог добиться какого-либо успеха. Мне удалось получить папки dir и различные файлы, но у меня продолжали возникать проблемы со ссылками, работающими в циклах. Так что я придумал эту работу вокруг. Это работает, но медленно. Любой совет, как повысить эффективность?

Файл с тегами файлов, которые я хочу

taglist.txt
foo
bar

Сценарий

#!/bin/bash

#this script seems to work until the download part


URL="http://www.example.com"
LINK_FILE=taglist.txt

while read TAG; do
    mkdir "$TAG"
    cd "$TAG"

        # Get the URLs from the page
        wget -q $URL/$TAG -O - | \tr "\t\r\n'" '   "' | \grep -i -o '<a[^>]\+href[ ]*=[ \t]*"\(ht\|f\)tps\?:[^"]\+"' | \sed -e 's/^.*"\([^"]\+\)".*$/\1/g' > tmp.urls.txt
        # Clean and sort URLs
        grep -i 'http://www.example.com/storage_dir/*' tmp.urls.txt | sort -u > tmp.curls.txt
            # Download the page with the URL
            while read TAPE_URL; do
            #wget -r -A.mp3 $TAPE_URL
            wget -O tmp.$RANDOM $TAPE_URL
            done <tmp.curls.txt
            # Find all the .mp3 links in the files
            grep -r -o -E 'href="([^"#]+)[.mp3]"' * | cut -d'"' -f2 | sort | uniq > $TAG.mp3.list
            # Clean Up
            rm tmp.* 
            # Download the collected URLs
            wget -i $TAG.mp3.list
    cd ..   
done <"$LINK_FILE"

0