Як завантажити посилання з unicode за допомогою wget?


14

Іноді в посиланні є символи unicode, наприклад http://www.example.com/fail.zip

Якщо ви вкажете свій браузер на нього, він належним чином запропонує вам завантажити файл як файл.zip. Але якщо спробувати це зробитиwget , файл постачається з сумішшю?, Відсотковим кодуванням (як% D0% BB) та (invalid encoding)рядком після імені файлу.

Які параметри можна додати до wget чи будь-яких інших прийомів командного рядка, щоб він поводився як Chrome і Firefox і зберігав файл точно так, як зазначено у наданому посиланні - у цьому випадку як файл.zip?

Рішення повинно працювати, не маючи явно записати його в команді, так явно wget -O файл.zip http://www.example.com/файл.zip не є хорошим рішенням.

Я розумію, що як тільки ви запустите, wget http://www.example.com/файл.zipвін намагається отримати http://www.example.com/%D1%84%D0%B0%D0%B9%D0%BB.zip , тобто перетворює посилання на відсотки кодування, що може бути причиною його збереження, але не видає ім'я файлу "належним чином".

Я розмістив тут дещо пов’язане питання , відповідь на який може допомогти чи не допомогти цьому.

Відповіді:


3

Ви можете використовувати curl замість цього, як слід

curl -O http://www.example.com/файл.zip

Це збереже його у файл.zip.


23

Для wget ви можете використовувати:

wget http://www.example.com/файл.zip --restrict-file-names=nocontrol

якщо ваша система може правильно обробляти UTF-8 або інше кодування.

Нарешті, якщо в завантаженому файлі залишаються ці символи%, ви можете використовувати модуль Python, urllib.unquote(filename)який замінить% xx втечі їх однозначним еквівалентом.


3
Це слід позначати як прийняту відповідь, Якби поєднання цього та всього іншого, що люди роблять за допомогою wget (наприклад, рекурсивна завантаження), могло б бути зроблено у програмі curl OP, і, ймовірно, всі інші це вже зробили б.
Бехроз

Може бути корисним також, --restrict-file-names=nocontrol якщо посилання на файл не є остаточним.
ipeacocks

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