Parsing out URLs específicos do arquivo html local

0

Eu quero analisar algumas URLs de um arquivo html salvo com um script / comando bash simples, para que eu possa baixá-las via wget laters.
O que eu tenho até agora é:

awk 'BEGIN{ RS="<a *href *= *\""} NR>2 {sub(/".*/,"");print; }' index.html >> url-list.txt

que grava todos os links que estão dentro do meu arquivo html em um documento de texto puro.

O que eu preciso, no entanto, são apenas links específicos

  • de um determinado domínio
  • todos os arquivos .ogg, por exemplo

tudo que no final seria parecido:

link

ou

link

obrigado antecipadamente!

    
por Kai 17.04.2012 / 15:01

1 resposta

3

Você diz que precisa fazer isso "no Bash", mas parece que significa "em um script" e não "usando a sintaxe pura do Bash" (há uma diferença). Eu suponho que você quer o significado "em um script".

Se você salvou todos os links em linhas separadas em um documento, poderá selecionar todos os links no domínio http://www.example.com/ , por exemplo,

grep "^http://www\.example\.com/" filewithlinks.txt

ou todos os links terminados em .ogg com

grep "\.ogg$" filewithlinks.txt

(Os períodos precedentes da barra invertida são para escapar do sinal " . " que significa "qualquer caractere". " \. " significa um período literal. Sem escapar, você encontrará links que terminam com, por exemplo, "logg" também.)

Você também pode fazer a correspondência de linha diretamente no comando awk , mas isso seria mais complicado de alterar de tempos em tempos, acredito. A maneira mais fácil é salvar a lista completa de links em um arquivo como você faz e, em seguida, basta pesquisar o arquivo com, por exemplo, grep como acima. Então você também não terá que baixar e analisar o documento novamente se quiser alterar o padrão de correspondência.

    
por 17.04.2012 / 16:23