Próbuję użyć wget do stworzenia lokalnego lustra strony internetowej. Ale odkrywam, że nie otrzymuję wszystkich stron z linkami.
Oto strona internetowa
http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
Nie chcę wszystkich stron zaczynających się od web.archive.org
, ale chcę wszystkich stron zaczynających się od http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
.
Kiedy używam wget -r
, w mojej strukturze plików znajduję
web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/index.html,
ale nie mam wszystkich plików, które są częścią tej bazy danych, np
web.archive.org/web/20110808041151/http://cst-www.nrl.navy.mil/lattice/struk/d0c.html.
Być może httrack poradziłby sobie lepiej, ale w tej chwili to za dużo.
Więc w jaki sposób można pobrać lokalną kopię zarchiwizowanej strony z Internetowego urządzenia do archiwizacji?
linux
wget
httrack
webarchive
użytkownik695322
źródło
źródło
20110722080716
migawką, dlatego-np
opcja wget nie pomoże.Odpowiedzi:
Chociaż pomocne, wcześniejsze odpowiedzi nie zwięźle, niezawodnie i powtarzalnie rozwiązują podstawowe pytanie. W tym poście krótko opisujemy trudności każdego z nich, a następnie oferujemy skromne
httrack
rozwiązanie.tło
Zanim jednak do tego dojdziemy, zastanów się nad przeczytaniem dobrze napisanej odpowiedzi mpy . W h [is | er] niestety zaniedbanym poście mpy rygorystycznie dokumentuje niejasny (i szczerze zaciemniający) schemat archiwalny Wayback Machine.
Nic dziwnego, że to nie jest ładne. Zamiast dyskretnie archiwizować witryny w jednym katalogu, The Wayback Machine efemerycznie dzieli pojedynczą witrynę na dwa lub więcej identyfikowanych numerycznie katalogów rodzeństwa. Powiedzenie, że to komplikuje tworzenie kopii lustrzanych, byłoby poważnym niedopowiedzeniem.
Zrozumienie strasznych pułapek przedstawionych przez ten schemat ma kluczowe znaczenie dla zrozumienia nieadekwatności wcześniejszych rozwiązań. Przejdźmy do tego, prawda?
Wcześniejsze rozwiązanie 1: wget
Powiązane pytanie StackOverflow „Odzyskaj starą stronę internetową z waybackmachine” jest prawdopodobnie najgorszym przestępcą pod tym względem, polecając
wget
do dublowania Wayback. Oczywiście to zalecenie jest zasadniczo nieuzasadnione.W przypadku braku złożonego przepisywania zewnętrznego adresu URL (np.
Privoxy
),wget
Nie można go używać do niezawodnego kopiowania stron archiwizowanych przez Wayback. Jak mało szczegółowych informacji w części „Problem 2 + Rozwiązanie”, każde wybrane narzędzie do tworzenia kopii lustrzanych musi umożliwiać nietransportowe pobieranie tylko adresów URL należących do witryny docelowej. Domyślnie większość narzędzi do tworzenia kopii lustrzanych pobiera tranzytowo wszystkie adresy URL należące zarówno do strony docelowej, jak i do stron z nią powiązanych - co w najgorszym przypadku oznacza „cały Internet”.Konkretny przykład jest w porządku. Podczas tworzenia kopii lustrzanej przykładowej domeny
kearescue.com
narzędzie do tworzenia kopii lustrzanych musi :https://web.archive.org/web/*/http://kearescue.com
. Są to zasoby dostarczane przez witrynę docelową (nphttps://web.archive.org/web/20140521010450js_/http_/kearescue.com/media/system/js/core.js
.).https://web.archive.org/web/20140517180436js_/https_/connect.facebook.net/en_US/all.js
.).Brak wykluczenia takich adresów URL zazwyczaj powoduje zebranie całego lub większości Internetu zarchiwizowanego w momencie archiwizacji witryny, szczególnie w przypadku witryn zawierających zasoby hostowane zewnętrznie (np. Filmy z YouTube).
To by było złe. Chociaż
wget
nie zapewniają wiersza poleceń--exclude-directories
opcję akceptując jedną lub więcej wzorów pasujących adresów należy wykluczyć, to nie wyrażenia regularne ogólnego przeznaczenia; są to uproszczone globusy, których*
składnia odpowiada zero lub więcej znaków z wyłączeniem/
. Ponieważ wykluczane adresy URL zawierają dowolnie wiele/
znaków,wget
nie można ich używać do wykluczania tych adresów URL, a zatem nie można ich używać do tworzenia kopii lustrzanych witryn archiwizowanych przez Wayback. Kropka. Koniec niefortunnej historii.Ten problem jest notowany od co najmniej 2009 roku. Nie został jeszcze rozwiązany. Kolejny!
Wcześniejsze rozwiązanie 2: notatnik
Prinz zaleca
ScrapBook
wtyczkę Firefox. Wtyczka do Firefoksa.To chyba wszystko, co musiałeś wiedzieć. Natomiast
ScrapBook
„SFilter by String...
funkcjonalność nie adres wspomnianego«Problem 2 + Solution», to jest nie rozwiązać późniejsza«3 Problem + rozwiązanie»- a mianowicie problemu zewnętrznych powtórzeń.Wątpliwe jest, czy
ScrapBook
nawet odpowiednio rozwiązuje ten pierwszy problem. Jak przyznaje mpy :Nierzetelne i zbyt uproszczone rozwiązania nie są rozwiązaniami. Kolejny!
Wcześniejsze rozwiązanie 3: wget + Privoxy
mpy następnie zapewnia solidne rozwiązanie wykorzystujące zarówno
wget
iPrivoxy
. Chociażwget
jest dość prosty w konfiguracji, niePrivoxy
jest uzasadniony. Lub proste.Ze względu na nieprzezwyciężoną przeszkodę techniczną związaną z prawidłową instalacją, konfiguracją i użytkowaniem
Privoxy
, musimy jeszcze potwierdzić rozwiązanie mpy . To powinno działać w skalowalnym, dynamiczny sposób. Biorąc pod uwagę bariery wejścia, to rozwiązanie jest prawdopodobnie bardziej odpowiednie dla automatyzacji na dużą skalę niż przeciętny webmaster próbujący odzyskać małe i średnie witryny.Czy
wget
+Privoxy
warto zobaczyć? Absolutnie. Ale większość superużytkowników może być lepiej obsługiwana przez prostsze, łatwiejsze do zastosowania rozwiązania.Nowe rozwiązanie: httrack
Enter
httrack
, narzędzie wiersza polecenia implementujące nadzbiórwget
funkcji dublowania.httrack
obsługuje zarówno wykluczanie adresów URL oparte na wzorcach, jak i uproszczoną restrukturyzację witryny. Ten pierwszy rozwiązuje „Problem 2 + Solution” mpy ; drugi „Problem 3 + Rozwiązanie”.W poniższym abstrakcyjnym przykładzie zamień:
${wayback_url}
przez adres URL katalogu najwyższego poziomu, który archiwizuje całą witrynę docelową (np'https://web.archive.org/web/20140517175612/http://kearescue.com'
.).${domain_name}
przez tę samą nazwę domeny obecną w${wayback_url}
wykluczeniu prefiksuhttp://
(np'kearescue.com'
.).No to ruszamy. Zainstaluj
httrack
, otwórz okno terminalacd
do katalogu lokalnego, do którego chcesz pobrać witrynę, i uruchom następujące polecenie:Po zakończeniu bieżący katalog powinien zawierać jeden podkatalog dla każdego typu pliku dublowanego z tego adresu URL. Zwykle obejmuje to co najmniej:
css
, zawierający wszystkie lustrzane arkusze stylów CSS.html
, zawierający wszystkie lustrzane strony HTML.js
, zawierający wszystkie dublowane skrypty JavaScript.ico
, zawierający jeden dublowany favicon.Ponieważ
httrack
wewnętrznie przepisuje całą pobraną zawartość, aby odzwierciedlić tę strukturę, Twoja witryna powinna być dostępna do przeglądania bez zmian. Jeśli przedwcześnie zatrzymałeś powyższe polecenie i chcesz kontynuować pobieranie, dołącz--continue
opcję do dokładnie tego samego polecenia i spróbuj ponownie.Otóż to. Nie są wymagane zewnętrzne zniekształcenia, podatne na błędy przepisywanie adresów URL ani serwery proxy oparte na regułach.
Cieszcie się, koledzy superużytkownicy.
źródło
Niestety, żadna z odpowiedzi nie była w stanie rozwiązać problemu stworzenia kompletnego serwera lustrzanego ze zarchiwizowanej witryny (bez powielania każdego pliku kilkadziesiąt razy). Więc zhakowałem razem inne podejście. Włamanie to ważne słowo, ponieważ moje rozwiązanie nie jest ani rozwiązaniem ogólnym, ani bardzo prostym (czytaj: kopiuj i wklej). Użyłem Privoxy Proxy Server do przepisania plików w locie podczas tworzenia kopii lustrzanej za pomocą wget.
Ale po pierwsze, co jest takiego trudnego w tworzeniu kopii lustrzanej z Wayback Machine ?
Problem 1 + Rozwiązanie
Pasek narzędzi Wayback jest przydatny do użytku interaktywnego, ale może zakłócać działanie wget. Pozbądź się tego dzięki regule filtru prywatnego
Problem 2 + Rozwiązanie
Chciałem uchwycić całą stronę, więc potrzebowałem niezbyt małej głębokości rekurencji. Ale nie chcę, aby wget przeszukiwał cały serwer. Zwykle do tego celu używasz opcji wget bez rodzica
-np
. Ale to nie zadziała tutaj, ponieważ chcesz dostaćale również
(zauważ zmieniony znacznik czasu na ścieżkach). Pominięcie
-np
spowoduje, że wget zacznie się czołgać(...)http://cst-www.nrl.navy.mil
i w końcu pobierze całąnavi.mil
witrynę. Zdecydowanie tego nie chcę! Tak więc ten filtr próbuje naśladować-np
zachowanie na maszynie Wayback:Zostawię to jako ćwiczenie do zagłębiania się w składnię. Filtr działa w następujący sposób: Zastępuje wszystkie adresy URL typu Wayback,
http://web.archive.org/web/20110801041529/http://www.nrl.navy.mil/
ohttp://some.local.server/404
ile nie zawierająhttp://cst-www.nrl.navy.mil/lattice/
.Musisz się dostosować
http://some.local.server/404
. To jest wysłanie błędu 404 do wget. Prawdopodobnie privoxy może to zrobić bardziej elegancko. Jednak najprostszym sposobem dla mnie było przepisanie linku do nieistniejącej strony na lokalnym serwerze http, więc utknąłem przy tym.I, trzeba także dopasować zarówno wystąpień o
http://cst-www.nrl.navy.mil/lattice/
odzwierciedlać witrynę, którą chcesz lustro.Problem 3 + Rozwiązanie
I wreszcie niektóre zarchiwizowane wersje strony mogą zawierać linki do strony w innej migawce. I to do jeszcze jednego. I tak dalej ... a skończysz z wieloma migawkami tej samej strony - i wget nigdy nie skończy, dopóki nie pobierze wszystkich migawek. Naprawdę też tego nie chcę! Tutaj bardzo pomaga fakt, że maszyna Wayback jest bardzo inteligentna. Możesz poprosić o plik
nawet jeśli nie jest to uwzględnione w
20110801041529
migawce. To automatycznie przekieruje Cię do właściwego:Kolejny filtr Privoxy do przepisania wszystkich migawek na najnowszy
W efekcie każda 14-cyfrowa liczba zawarta w
/.../
jest zamieniana na20120713212803
(dostosuj ją do najnowszej migawki żądanej witryny). Może to stanowić problem, jeśli w strukturze witryny występują takie liczby niepochodzące z maszyny Wayback. Nie idealne, ale w porządku dla strony Strukturtypen .Zaletą jest to, że wget ignoruje nową lokalizację, do której jest przekierowywany i zapisuje plik - w powyższym przykładzie - jako
web.archive.org/web/20110801041529/http://cst-www.nrl.navy.mil/lattice/struk/a_f.html
.Korzystanie z wget do tworzenia kopii lustrzanej zarchiwizowanej witryny
Wreszcie te filtry prywatne (zdefiniowane w
user.filter
) włączone wuser.action
viamożesz używać wget jak zwykle. Nie zapomnij powiedzieć wget, aby używał proxy:
Użyłem tych opcji, ale też
-m
powinno działać. Skończysz z folderamiponieważ maszyna Wayback oddziela obrazy (
im_
), arkusze stylów (cs_
) itp. Połączyłem wszystko razem i użyłem trochę magii sed, aby odpowiednio zastąpić brzydkie linki względne (../../../../20120713212803js_/http:/cst-www.nrl.navy.mil/lattice
). Ale to nie jest naprawdę konieczne.źródło
wget
Zwykle podczas pobierania pojedynczej strony HTML wszelkie wymagane dokumenty, które mogą być potrzebne do jej prawidłowego wyświetlenia, nie są pobierane. Używanie opcji -r razem z opcją -l może pomóc, ale ponieważ Wget zwykle nie rozróżnia dokumentów zewnętrznych od dokumentów wstawianych, zazwyczaj pozostawia się „dokumenty liściowe”, które nie spełniają swoich wymagań.
Powiedzmy na przykład, że dokument 1.html zawiera znacznik „” odwołujący się do 1.gif i znacznik „” wskazujący na dokument zewnętrzny 2.html. Powiedz, że 2.html jest podobny, ale jego obraz to 2.gif i że prowadzi do 3.html. Powiedzmy, że trwa to do dowolnej arbitralnie wysokiej liczby.
-m
--mirror
Włącz opcje odpowiednie do tworzenia kopii lustrzanych. Ta opcja włącza rekurencję i znaczniki czasu, ustawia nieskończoną głębokość rekurencji i utrzymuje listę katalogów FTP. Obecnie jest to odpowiednik opcji -r -N -l inf --no-remove-listing.
Zauważ, że Wget będzie zachowywał się tak, jakby podano -r, ale zostanie pobrana tylko ta jedna strona i jej wymagania. Odsyłacze z tej strony do dokumentów zewnętrznych nie będą śledzone. W rzeczywistości, aby pobrać pojedynczą stronę i wszystkie jej wymagania (nawet jeśli istnieją na osobnych stronach internetowych) i upewnić się, że działka wyświetla się lokalnie, autor lubi używać kilku opcji oprócz -p:
wget -E -H -k -K -p http://<site>/<document>
SO
wget -E -H -k -K -p http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice
będzie dla ciebie najlepszym garniturem. Ale polecam inne narzędzie,firefox
rozszerzeniescrapbook
album na wycinki
ScrapBook to rozszerzenie przeglądarki Firefox, które pomaga zapisywać strony internetowe i łatwo zarządzać kolekcjami. Kluczowe cechy to lekkość, szybkość, dokładność i obsługa wielu języków. Główne cechy to:
* Zapisz stronę internetową
* Zapisz fragment strony internetowej
* Zapisz stronę internetową
* Organizuj kolekcję w taki sam sposób jak Zakładki
* Wyszukiwanie pełnotekstowe i szybkie filtrowanie wyszukiwania kolekcji
* Edycja zebranej strony internetowej
* Tekst / HTML funkcja edycji przypominająca uwagi Opery
Jak wykonać kopię lustrzaną strony
Zainstaluj notatnik i uruchom ponownie Firefox
Restrict to Drirectory
/Domain
z filtraPoczekaj na zakończenie tworzenia kopii lustrzanej. Po wykonaniu kopii lustrzanej można uzyskać dostęp do strony internetowej offline z
ScrapBook
menu.źródło
:)
Zachowaj ostrożność przy użyciu poniższego polecenia, ponieważ bardzo dużo ono chwyta. 1 po „l” nakazuje pobranie wszystkich stron z linkami w witrynie o głębokości 1 poziomu. Jeśli chcesz, aby pająk był głębszy, zmień to na 2, ale może się nigdy nie skończyć, ponieważ może zostać złapany w pętlę.
Nie jestem pewien, które części witryny chcesz zachować, a które części Cię nie obchodzą, ale prawdopodobnie powinieneś umieścić białą listę i / lub czarną listę różnych części witryny, aby uzyskać tylko to, czego chcesz i zapobiec pobieranie całego archiwum.org lub Internetu.
Użyj,
-D www.examle.com,www.another.example.com
aby dodać do białej listy tylko te domeny, których chcesz, lub użyj,--exclude-domains www.examle.com,www.another.example.com
aby umieścić na czarnej liście to, czego nie chcesz.źródło
web.archive.org
hosta. Chcę wykonać kopię lustrzaną wszystkich elementów, którewget -np
byłyby dublowane, gdy oryginalna witryna była nadal online.-l
też niewiele pomaga, ponieważ należy go zwiększyć do 3 lub 4, co powoduje zbyt duże zwiększenie hierarchii witryny.Format adresów URL archiwum internetowego obejmuje datę i godzinę zarchiwizowania witryny. Aby zaoszczędzić miejsce, zasoby, które nie uległy zmianie, są powiązane z poprzednią wersją witryny.
Na przykład w tym adresie URL http://web.archive.org/web/20000229123340/http://www.yahoo.com/ data przeszukania witryny to 29 lutego 2000 r. O godz. 12:33 i 40 sekund.
Tak więc, aby uzyskać wszystko
http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
, musisz zacząć od tego, ale także pobrać wszystkie powiązane zasobyhttp://web.archive.org/web/*/http://cst-www.nrl.navy.mil/lattice/
.źródło
Istnieje już narzędzie, które robi to lepiej:
Aby go zdobyć, musisz mieć zainstalowany rubin. I wtedy:
źródło