Примушуйте wget використовувати фактичне ім'я файлу


50

Під час використання wgetсценарію для завантаження деяких файлів з Google Документів ім'я файлу не зберігається. Наприклад:

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

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

Відповіді:


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

зробить трюк для вас.

Він все ще не повністю реалізований і, здається, іноді помиляється, тому його не є типовим варіантом wget, використовуйте його на свій страх і ризик.


1
Я знаю...! Приємно, а? ;)
Бруно Перейра

Я насправді не дуже веб-програміст, тому я б ніколи не думав шукати фразу "вміст диспозиції". Ви врятували мені необхідність вручну переглянути заголовки HTTP, виявити заголовок розміщення вмісту та розібратися з ним.
Chinmay Kanchi

WOW + дивовижно. THX u roc хороша ідея.
Кенгуру

@BrunoPereira, я також намагаюся завантажити файл електронної таблиці Google. Але я не зміг знайти посилання на файл. Скажіть, будь ласка, як отримати посилання на файл електронної таблиці Google, щоб я міг використовувати wget так само, як Chinmay Kanchi. Заздалегідь спасибі.
user22180

@ChinmayKanchi я називаю себе веб-програмістом останні 15 років, але коли справа доходить до цього, я завжди намагаюся використовувати більш значущу назву в коді.
тишма

3

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

curl -OJL ${your_url}
  • -О для віддаленого імені
  • -J для віддаленого заголовка-імені
  • -L для розташування

див . параметри командного рядка curl .


0

Посилання Google Документи дійсно спонукає запустити сценарій на сервері, розбираючи його у потрібному файлі. Наскільки мені відомо, файл не існує ніколи на сервері у формі els, але генерується під час виконання, коли ви запитуєте про нього. Таким чином, wget нічого не може отримати.

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


Так, сервер просить запустити сценарій, який створює .xlsфайл на ходу. Однак повноцінний браузер не має з цим проблем. Тож, очевидно, можна обійтися і без API Документів.
Chinmay Kanchi

Думав, що сценарій, запущений у браузері, буде використовувати API, тому для того, щоб зробити це без браузера, доведеться відтворити сценарій. Цікаво, що у wget є прапор.
Етан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.