Что-то вроде этого?
for i in {7101..7200} ; do wget -q -O - http://www.ellinofreneianet.gr/sound.php\?id\=$i | grep ".=podcast/." ; done
Опции wget
: -q
quiet, показать отсутствие прогресса и т.д., И -O -
записать вывод в стандартный вывод.
Не на каждой странице есть ссылка на mp3; Некоторые даже показывают страницу, которая может быть страницей с ошибкой 404.
Страницы, начинающиеся с 0, также кажутся пустыми.
Пустые страницы имеют URL-адреса, оканчивающиеся на podcast/"
, поэтому мы можем исключить их с помощью соответствующих строк, у которых нет "
там:
... | grep ".=podcast/[^\"]"
Чтобы получить только .mp3
URL, используйте
... | grep -o 'bitsnbytesplayer.php.*\.mp3'
Вы сами узнали, как выводить URL страницы перед каждым mp3-адресом. Вот вариант оптимизации, использующий только один HTTP-запрос на страницу:
for i in {7100..7200} ; do \
wget -q -O - http://www.ellinofreneianet.gr/sound.php\?id\=$i | \
grep -o 'bitsnbytesplayer.php.*\.mp3' && \
echo http://www.ellinofreneianet.gr/sound.php\?id\=$i ; done | sed -n 'h;n;p;g;p'
&& echo ...
печатает URL-адрес, если grep ранее нашел URL-адрес mp3. Команда sed
переключает порядок пар линий.