FastNetMon

Tuesday, 9 October 2007

Немного рутины на...Perl !

Встала довольно банальная задача - скачать список файлов, прямые ссылки на которые указаны на некоторой веб странице. Задача банальная, но какая реализация!)

Сразу пробуем wget -r http://download.videolan.org/pub/videolan/vlc/SuSE/10.2/x86_64/, но получаем только два файла, которые не являются требуемыми (robots.txt и index.html, вместо полутора десятков rpm-ок), при нормальном стечении обстоятельств подкоманда -r wget`а скачивает все файлы, но тут что-то она заработать не захотела. Видимо из-за того, что указаны не абсолютные ссылки, а относительные (ffmpeg-debuginfo-0.4.9.8723-2.1.x86_64.rpm).

Но лень на выдумки хитра, поехали:
wget http://download.videolan.org/pub/videolan/vlc/SuSE/10.2/x86_64/ -Olist.txt
cat list.txt|perl -e 'map{print join"\n",($_="@$_")=~m/href=\"(.+?)\"/sg}[<>]' > list1.txt
cat list1.txt|perl -e 'print "http://download.videolan.org/pub/videolan/vlc/SuSE/10.2/x86_64/", $_ for<>' > links.txt
rm list*
wget -i links.txt

Мало, не спорю, но время большего не позволяет. Если кто-то подскажет более простой способ, буду благодарен.

2 comments :

  1. Вообще-то, нужно не -r, а --spider использовать.

    А для перла есть крайне удобный модуль HTML::LinkExtor

    ReplyDelete
  2. Я, кстати, на днях все же решился ознакомится с Маном вгета... оказывается все решалось намного проще %)

    За HTML::LinkExtor благодарю, обязательно попробую.

    ReplyDelete

Note: only a member of this blog may post a comment.