Как извлечь определенные строки из гиперссылки и создать папку с той же строкой в ударе?

У меня есть текстовый файл (web.txt), содержащий длинный список URL с этим шаблоном

http://www.example.com/ab1.htm
http://www.example.com/ab2.htm
http://www.example.com/bc1.htm
http://www.example.com/qw3.htm
.
.
http://www.example.com/xc15.htm

Я хочу выбрать список URL и затем извлечь веб-страницу последняя строка без .htm в URL (ab1, ab2, bc1.. xc15) как переменная и затем создают новую папку с тем именем. Затем использование wget я хочу загрузить ту веб-страницу на недавно созданную папку.

#!/bin/bash
NAMES=`cat web.txt` #urls from web.txt file
for NAME in $NAMES; do
   echo "$NAME"
   NEWNAME=#string from url
   mkdir -p /home/$NEWNAME
   wget $NAME
done

Я смог выбрать URL из своего файла web.txt, но у меня есть эти две проблемы

  1. Как извлечь строку из URL?
  2. Как к для цикла и загрузки веб-страница к недавно созданной папке?
2
задан 4 July 2016 в 19:47

2 ответа

Похоже, что Вы не перечитали man bash достаточно раз. Это просто:

BASEDIR="$HOME"
for myurl in $( cat web.txt ) ; do
    # erase everything "*" up to the last "/"
    mydir="${myurl##*/}"
    # erase the trailing "%"  ".htm"
    mydir=${mydir%.htm}
    mkdir -p $BASEDIR/$mydir
    # run the wget in a subshell, in the new directory
    (cd $BASEDIR/$mydir;wget "$myurl")
done

, по моему скромному мнению, хороший набор опций использовать с wget (читает man wget, чтобы видеть, хороши ли они для Вас, также) --no-parent --relative --page-requisites --convert-links -nv -t 3 --waitretry=6 --random-wait, но YMMV.

2
ответ дан 2 December 2019 в 01:44
while read url; do
    newname="$(basename "$url" .htm)"
    mkdir -p "/home/$newname"
    wget -O "/home/$newname/$newname.htm" "$url"
done < web.txt
4
ответ дан 2 December 2019 в 01:44

Другие вопросы по тегам:

Похожие вопросы: