Como baixar arquivos sem o URL completo?

2

Eu sempre quis saber como fazer o download dos arquivos através do shell do Linux (eu tenho wget, curl) que não tem um URL completo do arquivo a ser baixado, mas o URL completo é passado, por exemplo, para o navegador somente quando URL específico é visitado. No entanto, quando tento baixá-lo através do shell do Linux (com wget ou curl), tudo que consigo é um arquivo HTML.

Por exemplo, estou procurando baixar vários arquivos MB grandes daqui:

link

Então, quando eu colar isso no navegador, recebo a caixa de diálogo Salvar como, oferecendo-me para salvar o arquivo 'entry.fasta' e não outro arquivo HTML. Eu tentei enrolar -O -L-J como sugerido em esta questão , mas também não funcionou.

    
por u25 07.11.2015 / 22:33

3 respostas

3

O seu URL fornecido é bem carregado, por exemplo:

wget "URL"
curl -O "URL"

Como mencionado nos comentários: quote. Sempre cite!

Letras como & têm um significado especial em shells e a URL não será interpretada como você quer sem elas.

Quanto a fazer o download sem saber o nome do arquivo - ainda não sei ao certo o que você quer dizer, mas algumas observações:

Isto é específico do site para ebi.ac.uk

O URL fornecido é uma forma especial de URI . Provavelmente você está interessado na parte da consulta e, mais especificamente, na primeira seção: U00096.3 .

Você pode alterar isso para representar outros arquivos e intervalos. por exemplo, para fazer o download de U00000 para U00096 :

curl -O "http://www.ebi.ac.uk/ena/data/view/U00000-U00096&display=fasta&download=fasta&filename=U00000-U00096.fasta"
                                            ^^^^ data ^^^

A parte do nome do arquivo é simplesmente uma sugestão sobre o nome do arquivo. Você pode mudar isso para qualquer coisa que você quiser. Por exemplo: filename=myown.fasta - não vai alterar o que é baixado apenas qual nome é proposto pelo servidor - > web-browser, e também pode ser usado por curl etc.

Existem muitas possibilidades de busca e listagem no site e você precisa pesquisar.

Mais sobre o que está acontecendo

Ao clicar no link de download, ou usar ferramentas como curl ou wget, uma solicitação é enviada ao servidor em ebi.ac.uk para um arquivo específico. No seu exemplo, é provável que um referenciador esteja definido para:

http://www.ebi.ac.uk/ena/data/view/U00096.3

e uma consulta GET informada como:

query['display'] = fasta
query['download'] = fasta
query['filename'] = entry.fasta

O servidor responde com algo, entre outros, como:

Content-Disposition: attachment; filename=entry.fasta

Esta é uma maneira de o servidor confiar uma sugestão para o nome do arquivo de volta ao cliente. Se você usar uma versão curl que tenha a opção -J , poderá usá-la para salvar o arquivo com este nome: ou seja:

curl -OJ "URL"

Como mencionado

Isso é totalmente específico do site e a maneira como o URL é interpretado no servidor tem a ver com a maneira como o site é configurado.

Em um host diferente usando outra configuração com uma parte de consulta, como filename=foo.txt poderia ser também que você receba o arquivo real chamado foo.txt do servidor.

Quanto a este site, ebi.ac.uk, o arquivo não é um arquivo, mas um conteúdo gerado dinamicamente usando consultas a bancos de dados. O resultado da consulta é mesclado em um arquivo e exibido ao usuário final.

    
por 08.11.2015 / 00:32
2

Sem as aspas, o shell vê o & e interpreta isso como "execute tudo na linha até o & em segundo plano e continue interpretando / executando o restante da linha". Com aspas, o & é apenas parte da sequência de URL.

Existem três & s no seu URL, portanto, sem aspas, ele executaria quatro comandos, os três primeiros como trabalhos em segundo plano:

wget http://www.ebi.ac.uk/ena/data/view/U00096.3 &
display=fasta &
download=fasta &
filename=entry.fasta

A correção é citar o URL:

wget 'http://www.ebi.ac.uk/ena/data/view/U00096.3&display=fasta&download=fasta&filename=entry.fasta'

As aspas simples são adequadas aqui, mas se você quiser incorporar o (s) valor (es) de qualquer variável (s) no URL, precisará usar aspas duplas.

    
por 08.11.2015 / 00:51
1

Talvez você possa cuidadosamente usar o Recurso de download recursivo de wget . Então, se você

wget -r http://gcc-melt.org/

você baixará "cada" arquivo acessível de gcc-melt.org site

(mas leia a documentação de wget antes de tentar)

PS. Eu sou o proprietário e autor do site link então, por favor, não sobrecarregue-o.

    
por 08.11.2015 / 22:01

Tags