Extrai URLs de instruções de código em arquivos JS

1

Tudo, Eu quero extrair todos os URLs mencionados nas instruções de código em todos os arquivos js em uma pasta. Por exemplo, se um arquivo js contiver este trecho de código:

var myURL="http://yahoo.com/signup"  
//var myURL="http://yahoo.com/sign" --commented out 

quando meu script é executado, a saída deve ser apenas " link ". Atualmente estou usando o grep para extrair os URLs. A saída contém ambas as instruções na saída. Não quero o URL comentado na saída.

Atualmente estou usando uma instrução grep básica

 cat somefile.js | grep "http[s]\?://"  

Todos os URLs serão http / https e serão declarados em instruções em arquivos js.

Eu gostaria de ajustar essa declaração do grep para gerar apenas as URLs (excluindo as URLs comentadas) e não a declaração completa. Como posso ajustar esta declaração do grep?

    
por smokinguns 13.03.2012 / 19:05

2 respostas

0

Qual é o tamanho do seu arquivo / quantos você tem?

Uma solução muito simples que uso para esse tipo de coisa é o excel. Você poderia simplesmente copiar / colar o arquivo (contanto que houvesse apenas um par) no excel, depois ordenar a coluna. Você deve encontrar todas as suas variantes em um só lugar. Copie / cole-os em uma nova planilha e divida a coluna em "" ". Isso deve fornecer uma coluna dos seus URLs.

Claro, isso não é prático para muitos arquivos - um script funcionaria melhor lá.

EXEMPLO

Acho isso particularmente útil para analisar o json manualmente. Aqui está um exemplo de como eu normalmente uso isso. Aqui está um snippit de um array json:

{'english' => 'the animals, 'spanish' => 'los animales', 'image_url' => 'http://www.resourcesgraphics.com/images/Animals-Set-icons.jpg},
{'english' => 'the bear, 'spanish' => ' el oso  , 'image_url' => 'http://images.nationalgeographic.com/wpf/media-live/photos/000/005/cache/grizzly-bear_566_600x450.jpg},
{'english' => 'the beaver, 'spanish' => 'el castor, 'image_url' => 'http://images.nationalgeographic.com/wpf/media-live/photos/000/004/cache/beaver_457_600x450.jpg},
etc... (I have ~2000 entries in this file.)

Para remover todas as URLs, basta copiar / colar o arquivo inteiro no excel e usar Dados > Texto para colunas > Delimitado. Se você dividir uma citação, ela extrairá os URLs em sua própria coluna.

Isso também segue para o outro lado. (Eu faço isso com muito mais freqüência.) Se você quisesse fazer a tabela acima, você poderia usar este processo em sentido inverso. Para preencher rapidamente colunas, basta fazer uma primeira coluna assim:

{'*english*' => '*the animals*, '*spanish*' => '*los animales*', '*image_url*' => '*http://www.resourcesgraphics.com/images/Animals-Set-icons.jpg*},

(* = divisão da coluna)

Então, agora temos column1="{'", column2="english", column3="' = > '", etc ... as colunas 1, 3, 5, etc. são preenchedoras e os dados vão no meio. Em seguida, preencho todos os dados e copio os preenchimentos. Uma maneira rápida de preencher os dados de preenchimento é clicar duas vezes na alça inferior direita da célula de preenchimento superior. Isso deve duplicar os dados da coluna até o final dos dados.

Depois de criar sua planilha, salve-a. Você pode usá-lo novamente mais tarde. Quando você precisar de seus dados, basta copiar todos e colá-los no editor de texto.

Normalmente, há um monte de abas irritantes que sobraram das colunas, mas elas podem ser removidas com um simples localizar / substituir.

Espero que ajude - deixe-me saber se você gostaria de mais alguma informação! - L

    
por 13.03.2012 / 19:19
0

Aqui está uma solução de PERL:

perl -ne '/^[^\/\/]*"(http.+?)"/ && do{print "$1\n"}' somefile.js 

EXPLICAÇÃO:

  • perl -ne : Faz o loop através do arquivo de entrada linha a linha (-n) e executa o script fornecido na linha de comando (-e)

  • /^[^\/\/]*"(http.+?)"/ : procure linhas que não tenham // antes do primeiro http e salve os caracteres após o http até o primeiro " . O padrão entre parênteses () será salvo como $1 .

  • && do{print "$1\n"} : Se as linhas corresponderem à regex, imprima o padrão capturado (a URL).

CAVEATS:

Esta é uma solução muito simples que pressupõe que você tenha apenas um URL por linha e que todos os URLs sejam citados. Por favor, deixe-me saber se você precisa de uma versão mais sofisticada.

    
por 25.09.2012 / 18:44

Tags