LINUX.ORG.RU

Скормить содержимое пайпа как параметр

 , ,


0

1

Пилю скриптец для сграбливания картинок из галереи сайта на MediaWiki. Копирую нужный кусок исходников галереи (там тупо имя с пробелами и расширением) в текстовик. Потом пропускаю через пайп, конвертируя текст в ссылку. Ссылки выходят из пайпа, только как их wget-у скормить? Или я вообще идиот и wget умеет из файла ссылки брать?

UPD: тьфу, я забыл, что оно по пути ещё веб-страницу отдаёт, а там уже прямые ссылки с кашей. Чем парсить HTML? Когда-то пробовал регулярками на sed и perl, вышло черезжопно. Для того же Perl в репах куча модулей для работы с HTML есть, какой для данной задачи лучше подходит?

★☆

Последнее исправление: CYB3R (всего исправлений: 2)

Или я вообще идиот и wget умеет из файла ссылки брать?

Вообще да, с помощью того же ключа -i.

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

Годится, спасибо. Ещё хочу диапазон входных строк задавать (типа limit в SQL), а то картинок дофига, я их в несколько заходов качать буду.

MiniRoboDancer ★☆
() автор топика

в bash можно wget $(command|sec_command|...)
А вообще wget умеет пайп

ubuntuawp ★★
()

Пилю скриптец для сграбливания картинок из галереи сайта на MediaWiki. Копирую нужный кусок исходников галереи (там тупо имя с пробелами и расширением) в текстовик. Потом пропускаю через пайп, конвертируя текст в ссылку. Ссылки выходят из пайпа, только как их wget-у скормить?

ты текстовый файл распарси sed'ом, а потом уже получившийся список со ссылками скорми wget'у. Пайпы тут не нужны.

Чем парсить HTML?

если только ссылки выдрать — sed.

Если там сложная структура, то sed не очень удобен. В твоём случае специальный парсер нафиг не нужен.

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

Парсер мне всё равно понадобится для более сложной штуки. Это как раз хорошая возможность его осилить и обкатать.

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

ну тогда возьми парсер. Какой? Откуда я знаю, что такое «сложная штука»?

emulek
()
Ответ на: комментарий от MiniRoboDancer

да, похоже никак

#!/bin/bash

function filterurl() {
  grep "blog/2013/05" |
  fgrep -vf "$1"
}
function filterimg() {
  grep "jpg$" |
  fgrep -vf "$1"
}

rm -f list.*
touch list.full list.img
echo "http://wikimedia.ru/blog/categories/releases/" >list.txt
while [ -f list.txt ]; do
  mv list.txt list.tmp
  cat list.tmp |
  while read url; do
    echo ">>>$url"
    echo "$url" >>list.full
    lynx -image_links -dump -listonly -nonumbers $url | sort -u >page.log
    cat page.log | filterurl list.full >>list.txt
    cat page.log | filterimg list.img | tee -a list.img
  done
done

anonymous
()
Ответ на: комментарий от MiniRoboDancer
lynx -image_links -dump -listonly -nonumbers 'http://wikimedia.ru/blog/categories/releases/' \
    | grep '/commons/thumb/' \
    | sed 's!thumb/!!;s!/[^/]*$!!' \
    | wget -i-

, не?

anonymous
()
21 августа 2014 г.

Может быть, поможет. Я библиотеку ИФРАН так тянул:

RAS="http://iph.ras.ru/elib/monogr.html"
wget $RAS -qO - | grep -o '\.\./uplfile/.*\.pdf' | wget -B $RAS -nc -i -

Затем переопределял $RAS и тянул другой раздел. Парсить урлы довольно удобно по grep -o.

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