Analisando URLs específicos do arquivo HTML local

Analisando URLs específicos do arquivo HTML local

Quero analisar determinados URLs de um arquivo salvoHTML-file com um simples script/comando bash, para que eu possa baixá-los via wgetposterior.
O que 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 txt elegante.

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 ficaria assim:

http://www.foo.com/(pasta aleatória)/(nome da base aleatória).ogg

ou

http://subdomínio.foo.com/(pasta aleatória)/(outrasubpasta aleatória)/(nome da base aleatória).ogg

desde já, obrigado!

Responder1

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


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

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

ou todos os links que terminam .oggcom

grep "\.ogg$" filewithlinks.txt

(A barra invertida precedendo os pontos é para escapar do .sinal " ", que de outra forma significa "qualquer caractere". " \." significa um ponto literal. Sem escapar, você também corresponderá aos links que terminam com, por exemplo, "logg".)

Você também poderia fazer a correspondência de linha diretamente no awk comando, mas seria mais complicado mudar de vez em quando, acredito. A maneira mais fácil é salvar a lista completa de links em um arquivo como você faz e depois pesquisar o arquivo, por exemplo, grepcomo acima. Assim, você também não precisará baixar e analisar o documento novamente se quiser alterar o padrão de correspondência.

informação relacionada