Заставить 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 есть флаг для этого.
Итан