Niech wget konwertuje linki HTML na krewne po pobraniu, jeśli nie podano -k

32

-kOpcja (lub --convert-link) zamieni linki na swoich stronach internetowych, aby krewny po zakończeniu pobierania, takich jak strona człowiek mówi:

Po zakończeniu pobierania przekonwertuj łącza w dokumencie, aby były odpowiednie do lokalnego przeglądania. Wpływa to nie tylko na widoczne hiperłącza, ale także na dowolną część dokumentu, która prowadzi do treści zewnętrznych, takich jak osadzone obrazy, linki do arkuszy stylów, hiperłącza do treści innych niż HTML itp.

Więc jeśli nie określiłem -k, czy mogę uruchomić wgetponownie po pobraniu i naprawić to, a jeśli tak, jakie byłoby właściwe polecenie? Domyślam się wget -c [previous options used] [url]i uruchom go w tym samym katalogu roboczym, w którym plik został pobrany.

Nataniel
źródło
1
z pewnością możesz przetworzyć pliki po pobraniu, ale nie wiem, czy wgetto robi. twój pomysł na wypróbowanie go -cjest dobry. czas na eksperyment!
quack quixote
Czy przydaje Ci się narzędzie do konwersji linków? Nawiasem mówiąc, działający w systemie Windows ...
Nathaniel,
perl... bez wcześniej napisanego skryptu, ale gdybym chciał rozwiązania dla majsterkowiczów, tego właśnie użyłbym
quack quixote
Ok, dzięki. Nie instaluj Perla, a jego pobranie zajęłoby zbyt dużo czasu. Na szczęście dowiedziałem się, jak zmusić wget do wykonania pracy. Wysłałem odpowiedź.
Nathaniel,
btw, ActivePerl jest jak port perla systemu Windows; to dość mały instalator i jestem pewien, że większość modułów CPAN z nim współpracuje. activestate.com/activeperl
quack

Odpowiedzi:

23

Tak, możesz to wgetzrobić. Powiedziałbym użyć wget -nc -k [previous options] [previous url]. -ncjest bezobsługowy. Ze strony podręcznika:

Po −ncokreśleniu zachowanie to jest tłumione, a Wget odmówi pobrania nowszych kopii pliku.

I -kopcja konwertuje link. Wget zaczyna kopać na zdalnym serwerze, widzi wszystkie pliki, które już masz, odmawia ich ponownego pobrania, a po zakończeniu edytuje linki HTML do krewnego. Miły.

Nataniel
źródło
3
Nie, to nie działa dla mnie. Pobiera pierwszy plik (np. Index.html), zobacz, że jest już pobrany przystanek. Jeśli chcesz, aby wget działał rekurencyjnie, musisz użyć opcji znacznika czasu (-K). Więc wget musi żądać dopasowania wszystkich nagłówków, jeśli plik jest nowszy czy nie.
12
GNU Wget 1.13.3 zbudowany na darwin11.1.0. Próba użycia obu opcji jednocześnie dajeBoth --no-clobber and --convert-links were specified,only --convert-links will be used.
Ludovic Kuty
2
czy twoje pytanie nie wymagało bez -k?
barlop
8
Por. Komentarz @ LudovicKuty - od wget 1.13 --no-clobbernie działa --convert-links. Szczegółowe informacje można znaleźć na stronie http://savannah.gnu.org/bugs/?31781 .
David Moles
1
Na wszelki wypadek zbudowałem obraz dokera
berezovskyi