Как скачать файлы без полного URL?

Мне всегда было интересно, как загружать файлы через оболочку Linux (у меня есть wget, curl), у которых нет полного URL-файла загружаемого файла, но полный URL-адрес передается, например, в браузер только при посещении определенного URL-адреса , Однако, когда я пытаюсь загрузить его через оболочку Linux (с помощью wget или curl), все, что я получаю, это HTML-файл.

Например, я хочу загрузить с собой несколько больших файлов MB:

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

поэтому, когда я вставляю это в браузер, я получаю диалог «Сохранить как», предлагая мне сохранить файл «entry.fasta», а не другой файл HTML. Я попробовал curl -O -L -J, как было предложено в этом вопросе , но это тоже не сработало.

3 Solutions collect form web for “Как скачать файлы без полного URL?”

Ваш предоставленный URL-адрес отлично загружается, например:

 wget "URL" curl -O "URL" 

Как упоминалось в комментариях: цитата. Всегда цитируйте!

Письма типа & имеют особое значение в оболочках, и URL-адрес не будет интерпретироваться так, как вы хотите, без них.


Что касается загрузки без знания имени файла – я все еще не совсем уверен, что вы имеете в виду, но некоторые примечания:

Это сайт для ebi.ac.uk

Указанный URL является специальной формой URI . Вы, скорее всего, заинтересованы в части запроса, а точнее в первом разделе: U00096.3 .

Вы можете изменить это для представления других файлов и диапазонов. например, для загрузки U00000 в U00096 :

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

Часть имени файла – это просто предложение о том, как назвать файл. Вы можете изменить это на все, что захотите. Например: filename=myown.fasta – не будет изменять то, что загружено, только то, что имя предлагает сервер -> веб-браузер, а также может использоваться завитки и т. Д.


На сайте есть много возможностей для поиска и листинга, и вам приходится крутиться.

Подробнее о том, что происходит

Когда вы нажимаете ссылку для загрузки или используете такие инструменты, как curl или wget, запрос отправляется на сервер по адресу ebi.ac.uk для определенного файла. В вашем примере у него, вероятно, есть референт, установленный для:

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

и запрос GET:

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

Сердцу что-то отвечает, среди прочего, как:

 Content-Disposition: attachment; filename=entry.fasta 

Это способ для сервера полагаться на предложение для имени файла обратно клиенту. Если вы используете curl-версию с параметром -J вы можете использовать это, чтобы сохранить файл по этому имени: Ie:

 curl -OJ "URL" 

Как уже упоминалось

Это довольно специфично для сайта, а способ интерпретации URL-адреса на сервере связан с настройкой сайта.

На другом хосте, использующем другую настройку с частью запроса как filename=foo.txt может быть так же, как если бы вы обслуживали фактический файл с именем foo.txt с сервера.

Что касается этого сайта, ebi.ac.uk, файл не является файлом, а динамически сгенерированным контентом, используя запросы к базам данных. Результат запроса объединяется в файл и подается конечному пользователю.

Без кавычек оболочка видит & и интерпретирует это как «запускать все в строке до & в фоновом режиме, а затем продолжать интерпретировать / запускать остальную часть строки». С кавычками & является только частью строки URL.

В вашем URL-адресе есть три & , поэтому без кавычек он будет запускать четыре команды, а первые три – в качестве фоновых заданий:

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

Исправление состоит в том, чтобы указать URL-адрес:

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

Одиночные кавычки здесь прекрасны, но если вы хотите вставить значения (-и) любой переменной (-ов) в URL-адрес, вам нужно будет использовать двойные кавычки.

Возможно, вы могли бы тщательно использовать средство рекурсивного скачивания wget . Так что если вы

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

вы загрузите «каждый» доступный файл с сайта gcc-melt.org

(но прочитайте документацию wget перед попыткой)

PS. Я являюсь владельцем и автором сайта http://gcc-melt.org/, поэтому, пожалуйста, не перегружайте его.

  • Как использовать wget для загрузки всех ссылок с моего сайта и сохранения в текстовый файл?
  • Устранение неполадок `$ wget -A.pdf -r site.com`
  • Возобновить загрузку wget из другого зеркала
  • Могу ли я получить wget -x для загрузки структуры папок, но не создать каталог домена?
  • используя wget для загрузки всех аудиофайлов (более 100 000 страниц на wikia)
  • Как вы переименовываете файлы в списке, который будет использовать wget?
  • Возобновить зеркалирование через wget
  • wget несколько файлов PDF из ссылок
  • генерировать ссылки страниц с добавочной переменной
  • Как получить список URL-адресов из URL рекурсивно с фильтрацией
  • Wget сканирование без файла загрузки
  • Interesting Posts

    Храните домашнюю папку с OpenSuse 12 до Leap

    экспортированная переменная исчезает, когда я открываю новый терминал

    Какой может быть вариант изменения измененного времени файла в будущем?

    Удалить библиотеку, установленную через make install

    Разница между fsarchiver и дампом

    Есть ли способ идентифицировать путь приложения для процесса, который пытается получить доступ к Интернету в дистрибутиве Linux?

    Изменение пароля LDAP с помощью HTTPS

    Как распечатать PDF-документ с помощью mupdf?

    Переключиться на текстовую консоль в Fedora

    Настройки по умолчанию для машин VirtualBox?

    Multi-Distro boot DVD с SystemRescueCD 2.8.0 не загружает часть SRCD

    Есть ли способ получить сглаженные значки в X, под управлением Linux?

    Как загрузить весь исходный код raspbian?

    SSH – требуется только аутентификатор Google из-за пределов локальной сети

    Служба systemd не может получить доступ к домашней странице пользователя

    Linux и Unix - лучшая ОС в мире.