Massa parte do código-fonte HTML usando scripts shell

0

Nesta página, um programa de rádio link Eu quero baixar todos os shows gravados.

Eles são todo este tipo de páginas link
e eu quero pegar de todas estas 7 mil páginas a linha 422 do código-fonte onde o link de download está localizado. Isso pode ser conseguido não chamando também a expressão regular ". = podcast /." também funciona.

Como pegar a linha 422 de cada página desse tipo OU obter a parte "= podcast / ****. mp3" usando shell scripts / comandos?

    
por NoName 17.09.2014 / 16:57

1 resposta

0

Algo parecido com isto?

for i in {7101..7200} ; do  wget -q -O - http://www.ellinofreneianet.gr/sound.php\?id\=$i | grep ".=podcast/." ; done

As opções wget são -q quiet, não mostram progresso, etc, e -O - escrevem a saída para stdout.

Nem toda página tem um link de mp3 lá; Alguns até mostram uma página que pode ser a página de erro 404. As páginas a partir de 0 também parecem vazias.

As páginas vazias têm URLs que terminam em podcast/" , por isso podemos excluí-las com sequências de correspondência que não têm " lá:

... | grep ".=podcast/[^\"]"

Para obter apenas os .mp3 URLs, use

... | grep -o 'bitsnbytesplayer.php.*\.mp3'

Você descobriu como enviar o URL da página antes de cada URL de mp3. Aqui está uma variante do otimizador, usando apenas uma solicitação HTTP por página:

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'

O && echo ... imprime o URL se o grep tiver encontrado um URL de mp3. O comando sed muda a ordem dos pares de linhas.

    
por 17.09.2014 / 17:12