Заставить wget использовать фактическое имя файла


51

При использовании wgetв сценарии для загрузки некоторых файлов из Google Docs имя файла не сохраняется. Например:

wget 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls' 

сохраняет файл как pub?key=pyj6tScZqmEfbZyl0qjbiRQвместо того indicatorhivestimatedprevalence15-49.xls, что я получаю, если нажимаю на ссылку в браузере. Есть ли способ заставить это "браузерное" поведение в wget?

Ответы:


91
wget --content-disposition 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls'

сделает трюк для вас.

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


1
Я знаю...! Хорошо а? ;)
Бруно Перейра

Я не очень люблю веб-программист, поэтому я бы никогда не подумал о том, чтобы искать фразу «расположение контента». Вы избавили меня от необходимости вручную просматривать заголовки HTTP, находить заголовок размещения контента и разбираться с ним.
Чинмай Канчи

ВАУ + потрясающе. THX у тебя хорошая идея.
Кенгуру

@ BrunoPereira, я также пытаюсь загрузить файл электронной таблицы Google. Но я не смог найти ссылку на файл. Не могли бы вы сказать, как получить ссылку на файл электронной таблицы Google, чтобы я мог использовать wget так же, как Chinmay Kanchi. Заранее спасибо.
user22180

@ChinmayKanchi Я называю себя веб-программистом последние 15 лет, но когда дело доходит до этого, я всегда стараюсь использовать более содержательное имя в коде.
Тишма

3

Вы можете попробовать использовать curl для загрузки и сохранения оригинального имени файла:

curl -OJL ${your_url}
  • -O для удаленного имени
  • -J для удаленного заголовка-имени
  • -L для местоположения

см. параметры командной строки curl .


0

Ссылка Google Docs на самом деле говорит о том, что скрипт на сервере должен быть запущен, анализируя его в нужном вам файле. Насколько мне известно, файл никогда не существует на сервере в форме els, но генерируется во время выполнения, когда вы запрашиваете его. Таким образом, Wget ничего не может получить.

Чтобы загрузить файл, вам нужно будет использовать Google API http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocs/ .


Да, сервер просит запустить скрипт, который создает .xlsфайл на лету. Тем не менее, полноценный браузер не имеет проблем с этим. Таким образом, очевидно, что можно обойтись без Docs API.
Чинмай Канчи

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