Скачивание файлов с помощью wget


15

Я пытаюсь скачать файлы с этого сайта .

URL-адрес: http://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file

Когда я использую эту команду:

wget http://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file 

Я получаю только index.html?acc=GSE48191что-то вроде двоичного формата.

Как я могу скачать файлы с этого сайта HTTP?

Ответы:


22

Я думаю, что ваши ?интерпретируются с помощью shell (Исправление vinc17: более вероятно, что это &интерпретируется).

Просто попробуйте с простыми цитатами вокруг вашего URL:

wget 'http://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

Обратите внимание, что запрашиваемый вами файл является .tarфайлом, но приведенная выше команда сохранит его как index.html?acc=GSE48191&format=file. Чтобы он был правильно назван, вы можете переименовать его в .tar:

mv 'index.html?acc=GSE48191&format=file' GSE4819.tar

Или вы можете дать имя в качестве опции wget:

wget -O GSE48191.tar 'http://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

Приведенная выше команда сохранит загруженный файл как GSE48191.tarнапрямую.


Он загружается, но это даже не каталог. Если вы посмотрите на ссылку ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE48191 , то увидите, что существует несколько файлов .gz. Я до сих пор не могу получить к ним доступ ??
user3138373

Я предполагаю, что OP использует оболочку, которая игнорирует ?в качестве подстановочного знака, так как ничто не соответствует. Основная проблема заключается в следующем &: эта часть будет выполняться в фоновом режиме перед предшествующей (то есть с неполным URL) частью. Но решение остается тем же: процитировать URL.
vinc17

Спасибо вам Terdon и Vinc для редактирования / исправления. @ user3138373: Я не могу найти ваши файлы .gz по указанным ссылкам. Не могли бы вы еще раз сказать, какой URL вы используете для просмотра / доступа к ним?
Кеол

1
@ user3138373 файл, который вы загружаете, является архивом ( .tarфайлом), который содержит файлы .gz. Как только вы загрузили его, запустите, tar xvf GSE4819.tarчтобы развернуть архив и получить доступ к файлам.
Terdon

3

Другой способ, который может сработать, это использование этой команды:

wget -O nameOfTar.tar "http://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file"

Команда -Oбудет указывать имя для загрузки.

Конечно, ваша первоначальная проблема заключается в том, что оболочка интерпретировала «&», заключив ее в двойные кавычки.


2
-O Опция используется для указания имени файла , в котором dowloaded данные сохраняются. Это не имеет никакого отношения к загруженным данным (возможно, это то, что вы имели в виду, но я нашел это неясным).
Кеол

Да, извините, я
исправлюсь

Я не уверен, почему за это проголосовали.
ryekayo

3
Я не понизил голос, но это, вероятно, потому что ваше решение не решает проблему: &интерпретируется оболочкой, и загрузка .tarфайла не удастся.
Кеол

0

wget -O "name-you-want-to-save-as.format" http://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file

Это должно получить вам файл, который вы хотите загрузить в текущий каталог, в котором вы находитесь.


wget: missing URLэто то, что wgetотвечает на это, потому что вам не хватает аргумента для -O. Кроме того, я думаю, что это, вероятно, не решит проблему ОП в любом случае.
Селада

Поскольку URL-адрес содержит &, этот ответ не будет работать, если вы не добавите ""или не добавите ''URL-адрес.
Аарон Франке

0

Из $ curl -G http://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191">here</a>.</p>
</body></html>

Так что вам нужно сделать

wget https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191

Обратите внимание на "s" после http. Я попробовал это сам, и это работало просто отлично.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.