Zgrywaj stronę internetową przez HTTP, aby pobierać obrazy, HTML i CSS


22

Muszę zgrać witrynę przez HTTP. Muszę pobrać obrazy, HTML, CSS i JavaScript, a także uporządkować je w systemie plików.

Czy ktoś wie jak to zrobić?


2
Powinieneś wspomnieć, że nie będziesz używać tego oprogramowania do naruszania praw autorskich. W przeciwnym razie zakładamy, że chcesz odzwierciedlić czyjąś zawartość, abyś mógł na tym zarabiać.
belgariontheking

Kiedyś klient chciał odejść, ale weź statyczną wersję HTML swojej witryny, porzucając CMS. Użyłem HTTrack do wygenerowania strony statycznej. Działa dobrze w systemach Windows i Ubuntu.
TRiG,

4
@belgariontheking: Ciekawe, że zakładasz najgorsze. Używamy również WinHTTrack do pobierania statycznej wersji HTML naszej dynamicznej strony internetowej.
Umber Ferrule

Odpowiedzi:


40
wget -erobots=off --no-parent --wait=3 --limit-rate=20K -r -p -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" -A htm,html,css,js,json,gif,jpeg,jpg,bmp http://example.com

To działa w konsoli.

spowoduje to złapanie witryny, odczekanie 3 sekund między żądaniami, ograniczenie szybkości pobierania, aby witryna nie została zabita, i zamaskowanie się w sposób, który sprawia, że ​​wygląda ona tylko na przeglądarkę, dzięki czemu strona Cię nie odcina za pomocą mechanizmu przeciw pijawce.

Zwróć uwagę na -Aparametr wskazujący listę typów plików, które chcesz pobrać.

Możesz także użyć innego znacznika, -D domain1.com,domain2.comaby wskazać serię domen, które chcesz pobrać, jeśli mają one inny serwer lub cokolwiek innego do przechowywania różnego rodzaju plików. Nie ma bezpiecznego sposobu na zautomatyzowanie tego we wszystkich przypadkach, jeśli nie otrzymasz plików.

wgetjest powszechnie instalowany w systemie Linux, ale można go w prosty sposób skompilować dla innych systemów uniksowych lub łatwo pobrać dla systemu Windows: GNUwin32 WGET

Używaj tego dla dobra, a nie zła.


1
wget -erobots = off --no-parent --wait = 3 --limit-rate = 50K -r -p -U "Mozilla / 4.0 (kompatybilny; MSIE 7.0; Windows NT 5.1)" -k - prefiks katalogu „C: \ zgrać” - strona-wymagania - HTM, aspx, php, jsp, asp, zip, png, html, css, js, json, gif, jpeg, jpg, bmp domain.com
Chris S

Czy działałoby to w przypadku „próżnych adresów URL”? Martwię się o moje treści (OK, piosenki) napisane w serwisie społecznościowym i chcę utworzyć kopię zapasową lokalnie. Witryna to „www.example.com”, ale istnieje próżny adres URL z moją nazwą użytkownika „avi.example.com”. Nie chcę pobierać całej strony, tylko moje treści!
Avi,

W systemie Linux możesz zainstalować wget ze źródeł. Na przykład wersja Ubuntu nie analizuje CSS, podczas gdy robi to wget nadrzędny.
NRD

16

Dobre, bezpłatne rozwiązanie: HTTrack

HTTrack jest darmowym (GPL, darmowym / darmowym oprogramowaniem) i łatwym w użyciu narzędziem do przeglądania offline.

Umożliwia pobranie witryny sieci Web z Internetu do lokalnego katalogu, rekurencyjne budowanie wszystkich katalogów, pobieranie HTML, obrazów i innych plików z serwera na komputer. HTTrack porządkuje względną strukturę linków oryginalnej strony. Wystarczy otworzyć stronę „lustrzanej” strony w przeglądarce i możesz przeglądać stronę od linku do linku, tak jakbyś oglądał ją online. HTTrack może również aktualizować istniejącą stronę lustrzaną i wznawiać przerwane pobieranie. HTTrack jest w pełni konfigurowalny i ma zintegrowany system pomocy.


7

W systemach Linux „wget” robi to właściwie.

Został również przeniesiony na kilka innych platform, jak wspomniano w kilku innych odpowiedziach.



Ponieważ jest to Linux, prawdopodobnie po prostu utworzę maszynę Wirtualną Ubuntu, uruchomię wget i przeniosę pliki z powrotem na komputer. Wydaje się, że byłoby to szybsze niż przenoszenie do systemu Windows. :) (Oczywiście, przenoszenie do Windows jest prawdopodobnie dobrym ćwiczeniem!)
JMD

Uruchamiam Debiana na moim komputerze. Czy mogę powiedzieć wgetowi, aby pobierał powiązane podkatalogi / javascript / css / images, podając tylko domenę główną http?
damon

# Pobierz całą zawartość example.com wget -r -l 0 example.com

Tak ... lub użyj natywnego portu Windows lub Cygwin ...
Tmdean


1

Spójrz na rozszerzenie Notatnika dla firefox. Wykonuje w tym niesamowitą robotę, a także integruje się z firebugiem i pozwala usunąć elementy z DOM przed zapisaniem, jeśli chcesz.


1

Musisz użyć wget - który jest dostępny na większość platform. curl nie zażąda rekurencyjnie dokumentów, co jest jedną z głównych zalet wget.

Linux: (zwykle dołączony do dystrybucji) http://www.gnu.org/software/wget/
Windows: http://gnuwin32.sourceforge.net/packages/wget.htm
Mac: http: //www.geekology. co.za/blog/2009/02/macports-compile-and-install-open-source-software-on-mac-os-x/

PROSZĘ upewnić się, że nie hamujesz witryny - ustaw odpowiednie opóźnienia między żądaniami i upewnij się, że jest to zgodne z warunkami korzystania z witryny.

-Adam


tak naprawdę to nasze serwery byłyby młotkiem. strona jest generowana dynamicznie przez PHP, a CMS / DB był w pewnym sensie zniekształcony. to skomplikowana historia, jestem programistą, który właśnie tu dotarł. ale teraz budujemy wszystko w django, więc nie musisz się martwić.
damon

1

Właściwie, śledząc mój komentarz w poście GWLlosy, przypomniałem sobie, że mam zainstalowany GnuWin32 i na pewno zawiera on port wget dla systemu Windows.

http://sourceforge.net/projects/gnuwin32/

GnuWin32 provides Win32-versions of GNU tools,
or tools with a similar open source licence.
The ports are native ports, that is they rely
only on libraries provided with any 32-bits
MS-Windows operating system, such as
MS-Windows 95 / 98 / 2000 / NT / XP


1

wget --random-wait -r -p -e robots=off -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" --limit-rate=20k -b http://www.example.com

  • -p : parametr mówi wgetowi, aby uwzględnił wszystkie pliki, w tym obrazy.
  • -e robots=off : ignoruj ​​reguły robots.txt witryn
  • -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" : ciąg agenta użytkownika
  • --random-wait : unikaj umieszczania na czarnej liście
  • --limit-rate=20k : ogranicza szybkość pobierania plików.
  • -b : kontynuuje wget po wylogowaniu.

To są parametry, których używam. Dodam także opcję -c(lub --continue), gdy coś pójdzie nie tak i muszę ponownie uruchomić proces.
kub1x


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.