LINUX.ORG.RU

Скачать все картинки с веб-страницы

 , , , ,


1

2

Нужно скачать все jpg-файлы, на которые ссылается заданная html-страница. Как это сделать в линуксе?
Пробую мучать старый добрый wget:

wget -kp -nc -l1 -A "*.gif,*.png,*.jpg,*.jpeg,*.JPG" http://www.adme.ru/vdohnovenie-919705/sumasshedshie-starye-otkrytki-549605

Но оно не работает! Чяднтую?

p.s. Картинки внутри имеют такой путь:

http://files.adme.ru/files/news/part_54/549605/1211305-R3L8T8D-650-2.jpg
Может нужно как-то это в правилах указать?

★★★★

wget http://files.adme.ru/files/news/part_54/549605/{1..27}.jpg
NeXTSTEP ★★ ()
Ответ на: комментарий от NeXTSTEP

Ого! Круто.

А откуда wget узнаёт имена файлов картинок?

Novator ★★★★ ()
Ответ на: комментарий от NeXTSTEP

Ааа, понял - номер и есть имя файла.

Тогда другой вопрос, как вы «догадались» про номер?
Ведь я пробовал глядеть в папку http://files.adme.ru/files/news/part_54/549605/, но мне было сказано: «403 Forbidden».

Novator ★★★★ ()
Ответ на: комментарий от Novator

Ну так смотреть папку нельзя, а качать что есть можно.

Burunduk ()
Ответ на: комментарий от NeXTSTEP

И еще проблема: когда запускаю ваш вариант из командной строки - подставляются цифры 1,2,3..27, качается.
А когда запускаю из shell-файла, то вместо цифр подставляется какая-то фигня (но не цифры), в чём подвох?

Novator ★★★★ ()
Ответ на: комментарий от Burunduk

Дак это ясно, а откуда человек узнал про эти простые имена файлов? В html ссылка на другие имена, заковыристые.

Novator ★★★★ ()
Ответ на: комментарий от Burunduk

И значально мне было интересно, может ли wget сам смотреть все ссылки на картинки и их выкачивать? Т.е. чтобы мартышка гомо сапиенс (в моём лице) не сидела и не анализировала URL, и затем писала формулу скачки.

Вот в чём соль-то.

Novator ★★★★ ()
Последнее исправление: Novator (всего исправлений: 1)
Ответ на: комментарий от Novator

{1..27} - башизм, в других шеллах такая конструкция может не работать. Добавьте #!/bin/bash в первую строку скрипта чтобы он запускался башем.

Как вариант, можно написать так, чтобы работало во всех шеллах.

wget `seq 1 27|sed 's \(.*\) http://files.adme.ru/files/news/part_54/549605/\1.jpg '`

NeXTSTEP ★★ ()
Ответ на: комментарий от Novator

Не знаю, почему ваша конструкция не работает. Если её применить к этой странице, то аватарки таки выкачиваются.

Можно выдрать картинки грепом, но это немного кривовато.

curl http://www.adme.ru/vdohnovenie-919705/sumasshedshie-starye-otkrytki-549605 | grep -o 'http://.*\.jpg' | xargs wget

NeXTSTEP ★★ ()
Ответ на: комментарий от NeXTSTEP

Фигассе!! Вот это юниксвэй, вот это я понимаю!
Искал всё это в гугле, но не нашел (может мало искал).
Сам я с пайпами на таком уровне работать не умею, и баш знаю только на базовом уровне.

Спасибо. Сейчас всё это себе в норку в скрипты утащу :>

Novator ★★★★ ()
Ответ на: комментарий от Novator

Фигассе!! Вот это юниксвэй, вот это я понимаю!

Тогда я тебе не буду говорить как очистить убунту от старых ядер, а то ты умрёшь ещё от нердгазма :)

static_lab ★★★★★ ()
Ответ на: комментарий от static_lab

Утютю, ты бы лучше на вопросы отвечал как NeXTSTEP, а не сопли надувал.

Novator ★★★★ ()
Последнее исправление: Novator (всего исправлений: 1)
Ответ на: комментарий от NeXTSTEP

Доработал напильником, вот результат:

#!/bin/sh
Link="http://www.adme.ru/vdohnovenie-919705/sumasshedshie-starye-otkrytki-549605"
Path="/mnt/data/Media/Pictures/Other/"

Res=1
Try=0

while [ $Res != 0 ]; do
  Try=$(($Try+1))
  echo "Попытка: "$Try
  /mnt/data/Personal/C/usbreset/resetmodem.sh

  #wget -t 0 -c -T 15 --retry-connrefused=on -P $Path $Link
  wget -O - $Link | grep -o 'http://.*\.jpg' | xargs wget -t 0 -c -T 15 --retry-connrefused=on -P $Path
  Res=$?
  echo "Res="$Res

  sleep 5
done

#poweroff
#pm-suspend

Может пригодится следом идущим.

Novator ★★★★ ()

попробуй curl, он умеет больше, и реализовано там всё удобнее в разы.

funeralismatic ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.