Как скачать ссылку с юникодом с помощью wget?

Иногда ссылка содержит символы Юникода, например http://www.example.com/файл.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 [ 115], то есть он преобразует ссылку в процентную кодировку, что может быть причиной того, что он сохраняет не правильно отображаемое имя файла.

Я разместил здесь несколько связанный вопрос , ответ на который может помочь, а может и не помочь.

14
задан 23 May 2017 в 15:39

4 ответа

Я не смог найти способ решить эту проблему с помощью wget, но смог успешно передать файлы с помощью Midnight Commander .

0
ответ дан 23 May 2017 в 15:39

Вместо этого вы можете использовать curl, как описано в

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

. Это сохранит его в файл.zip.

0
ответ дан 23 May 2017 в 15:39

Для wget вы можете использовать:

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

, если ваша система может правильно обрабатывать UTF-8 или другую кодировку.

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

0
ответ дан 23 May 2017 в 15:39

Мой ответ аналогичен тому, что отправил Баладжи Пурушотхам.

Мне пришлось добавить .parse, чтобы это заработало в python:

import wget
wget.download(urllib.parse.unquote(url), destination_file)
0
ответ дан 3 September 2020 в 03:03

Другие вопросы по тегам:

Похожие вопросы: