Jak pobrać link z Unicode za pomocą wget?


14

Czasami link zawiera znaki Unicode, takie jak http://www.example.com/файл.zip

Jeśli wskażesz na nią przeglądarkę, wyświetli się monit o pobranie pliku jako файл.zip. Ale jeśli spróbujesz to zrobić wget, plik zawiera mieszankę?, Kodowania procentowego (np.% D0% BB) i (invalid encoding)ciąg po nazwie pliku.

Jakie parametry mogę dodać do wget lub innych sztuczek wiersza poleceń, aby zachowywał się jak Chrome i Firefox i zapisuje plik dokładnie tak, jak podano w renderowanym łączu - w tym przypadku jako файл.zip?

Rozwiązanie powinno działać bez konieczności jawnego zapisywania go w poleceniu, więc polecenie jawne wget -O файл.zip http://www.example.com/файл.zipnie jest dobrym rozwiązaniem.

Zdaję sobie sprawę, że jak tylko uruchomisz wget http://www.example.com/файл.zip, próbuje pobrać http://www.example.com/%D1%84%D0%B0%D0%B9%D0%BB.zip , to znaczy, że konwertuje link na procent kodowanie, co może być powodem, dla którego zapisuje się, nie renderuje nazwy pliku „poprawnie”.

Zadałem tu nieco powiązane pytanie , na które odpowiedź może lub nie może pomóc.

Odpowiedzi:


3

Zamiast tego możesz użyć curl, jak opisano poniżej

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

Zapisze go w pliku файл.zip.


23

W przypadku wget możesz użyć:

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

jeśli twój system poprawnie obsługuje UTF-8 lub inne kodowanie.

Wreszcie, jeśli nadal masz te% symboli w pobranym pliku, możesz użyć modułu Python urllib.unquote(filename), który zastąpi znaki ucieczki% xx ich ekwiwalentem jednego znaku.


3
Powinno to zostać oznaczone jako zaakceptowana odpowiedź. Jeśli połączenie tego i wszystkiego innego, co ludzie robią z wget (np. Pobieranie rekurencyjne), można wykonać w curl OP i prawdopodobnie wszyscy inni już by to zrobili.
Behrooz,

Może być przydatny również --restrict-file-names=nocontrol wtedy, gdy link do pliku nie jest ostateczny.
ipeacocks

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.