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ć?

Damon
źródło
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.

DevelopersDevelopersDevelopers
źródło
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.

slhck
źródło
7

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

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

GWLlosa
źródło
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
2

Oczywiście WGet został wspomniany kilka razy. Najlepszy interfejs użytkownika, jaki znalazłem, to

Istnieje kilka innych interfejsów użytkownika dla WG. Niektóre z nich są kandydatami na najgorsze pytanie dotyczące interfejsu użytkownika

Chris S.
źródło
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.

GBa
źródło
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

Adam Davis
źródło
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
JMD
źródło
1

Użyłem tego kilka lat temu i działało dobrze. Tylko Windows. Kiedyś był oprogramowaniem reklamowym, ale już nie:

http://www.webreaper.net/

Odilon Redo
źródło
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.
Davidcondrey
źródło
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
0

Myślę, że grabber strony IDM jest najlepszym rozwiązaniem, jest też Teleport pro

Marwan Aouida
źródło