Chcę używać Wget do zapisywania pojedynczych stron internetowych (nie rekurencyjnie, nie całych witryn) w celach informacyjnych. Podobnie jak „Strona internetowa Firefox kompletna”.
Mój pierwszy problem to: nie mogę zmusić Wget do zapisania obrazów tła określonych w CSS. Nawet jeśli zapisało to pliki obrazów tła, nie sądzę - Convert-links przekonwertowałoby adresy URL obrazu tła w pliku CSS, aby wskazywały na lokalnie zapisane obrazy tła. Firefox ma ten sam problem.
Mój drugi problem to: jeśli na stronie chcę zapisać obrazy hostowane na innym serwerze (np. Reklamy), nie zostaną one uwzględnione. --span-hosts nie wydaje się rozwiązać tego problemu w poniższym wierszu.
Używam:
wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off http://domain.tld/webpage.html
Odpowiedzi:
Ze strony podręcznika użytkownika Wget :
Również w przypadku, gdy
robots.txt
nie zezwalasz na dodanie-e robots=off
źródło
wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites [url]
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows
[url]wget
Komenda oferuje opcję--mirror
, która robi to samo, co:Możesz również wrzucić,
-x
aby utworzyć całą hierarchię katalogów dla witryny, w tym nazwę hosta.Być może nie możesz tego znaleźć, jeśli jednak nie używasz najnowszej wersji
wget
.źródło
Wygląda na to, że
wget
Firefox nie analizuje CSS pod kątem linków do włączenia tych plików do pobrania. Możesz obejść te ograniczenia, sprawdzając, co potrafisz i skryptując ekstrakcję linków z dowolnego CSS lub Javascript w pobranych plikach, aby wygenerować listę plików, które przegapiłeś. Następnie drugie uruchomieniewget
tej listy łączy może pobrać wszystko, co zostało pominięte (użyj-i
flagi, aby podać adresy URL list plików).Jeśli podoba Ci się Perl, na CPAN jest moduł CSS :: Parser , który może dać ci łatwy sposób na wyodrębnienie linków w ten sposób.
Zauważ, że
wget
parsuje tylko niektóre znaczniki HTML (href
/src
) i css uris (url()
) w celu ustalenia, jakie strony należy pobrać. Możesz spróbować użyć dodatków Firefox, takich jak DOM Inspector lub Firebug, aby dowiedzieć się, czy obrazy innych firm, których nie otrzymujesz, są dodawane przez JavaScript - jeśli tak, musisz skorzystać ze skryptu lub wtyczki Firefox, aby je uzyskać też.źródło
Zrobiłem Webtography w podobnym celu: https://webjay.github.io/webtography/
Korzysta z Wget i wypycha witrynę do repozytorium na koncie GitHub.
Używam tych argumentów:
https://github.com/webjay/webtography/blob/master/lib/wget.js#L15-L26
źródło