Rippen Sie eine Website über HTTP, um Bilder, HTML und CSS herunterzuladen


22

Ich muss eine Site über HTTP rippen. Ich muss die Bilder, HTML, CSS und JavaScript herunterladen und in einem Dateisystem organisieren.

Weiß jemand, wie man das macht?


2
Sie sollten erwähnen, dass Sie diese Software nicht für Urheberrechtsverletzungen verwenden werden. Ansonsten gehen wir einfach davon aus, dass Sie den Inhalt einer anderen Person spiegeln möchten, damit Sie damit Geld verdienen können.
belgariontheking

Wir hatten einmal einen Kunden, der gehen wollte, aber die statische HTML-Version ihrer Site nahm und das CMS aufgab. Ich habe HTTrack verwendet, um die statische Site zu generieren. Es funktioniert gut unter Windows und Ubuntu.
TRiG

4
@belgariontheking: Interessanterweise nimmst du das Schlimmste an. Wir verwenden WinHTTrack auch, um eine statische HTML-Version unserer eigenen dynamischen Website herunterzuladen.
Umber Ferrule

Antworten:


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

Dies läuft in der Konsole.

Dies greift nach einer Site, wartet 3 Sekunden zwischen den Anfragen, begrenzt die Geschwindigkeit des Downloads, damit die Site nicht zerstört wird, und maskiert sich so, dass es so aussieht, als wäre es nur ein Browser, damit die Site Sie nicht abschneidet mit einem Anti-Blutegel-Mechanismus.

Beachten Sie den -AParameter, der eine Liste der Dateitypen angibt, die Sie herunterladen möchten.

Sie können auch ein anderes Tag verwenden, -D domain1.com,domain2.comum eine Reihe von Domänen anzugeben, die Sie herunterladen möchten, wenn sie über einen anderen Server verfügen oder andere Arten von Dateien hosten. Es gibt keine sichere Möglichkeit, dies für alle Fälle zu automatisieren, wenn Sie die Dateien nicht erhalten.

wgetist in der Regel unter Linux vorinstalliert, kann jedoch problemlos für andere Unix-Systeme kompiliert oder für Windows heruntergeladen werden: GNUwin32 WGET

Verwenden Sie dies zum Guten und nicht zum Bösen.


1
wget -erobots = off --no-parent --wait = 3 --limit-rate = 50 KB -r -p -U "Mozilla / 4.0 (kompatibel; MSIE 7.0; Windows NT 5.1)" -k --directory-prefix "C: \ rip" - Seitenanforderungen - HTML, ASPX, PHP, JSP, ASP, ZIP, PNG, HTML, CSS, JS, JSON, GIF, JPEG, JPG, BMP domain.com
Chris S

Würde dies bei "Vanity-URLs" funktionieren? Ich mache mir Sorgen um meinen Inhalt (OK, Songs), der auf einer Social-Networking-Site geschrieben wurde, und ich möchte ihn lokal sichern. Die Site ist "www.example.com", aber es gibt eine Vanity-URL mit meinem Benutzernamen "avi.example.com". Ich möchte nicht die gesamte Website herunterladen, nur meine Inhalte!
Avi

Unter Linux können Sie wget aus Quellen installieren. Die Ubuntu-Version zum Beispiel analysiert CSS nicht, während dies bei Upstream-Wget der Fall ist.
DDR

16

Gute, kostenlose Lösung: HTTrack

HTTrack ist ein kostenloses (GPL, libre / free Software) und benutzerfreundliches Offline-Browser-Dienstprogramm.

Sie können eine World Wide Web-Site aus dem Internet in ein lokales Verzeichnis herunterladen, alle Verzeichnisse rekursiv erstellen und HTML, Bilder und andere Dateien vom Server auf Ihren Computer übertragen. HTTrack ordnet die relative Linkstruktur der ursprünglichen Site an. Öffnen Sie einfach eine Seite der "gespiegelten" Website in Ihrem Browser, und Sie können die Website von Link zu Link durchsuchen, als würden Sie sie online anzeigen. HTTrack kann auch eine vorhandene gespiegelte Site aktualisieren und unterbrochene Downloads fortsetzen. HTTrack ist vollständig konfigurierbar und verfügt über ein integriertes Hilfesystem.


7

Auf Linux-Systemen erledigt 'wget' dies ziemlich genau.

Es wurde auch auf mehrere andere Plattformen portiert, wie in einigen anderen Antworten erwähnt.



Da es sich um Linux handelt, würde ich wahrscheinlich nur eine Ubuntu-VM erstellen, wget ausführen und die Dateien zurück auf meinen Host-Computer übertragen. Das scheint schneller zu sein als eine Portierung auf Windows. :) (Zugegeben, auf Windows zu portieren ist wahrscheinlich sowieso eine gute Übung!)
JMD

Ich starte Debian auf meinem Rechner. Kann ich wget anweisen, die zugehörigen Unterverzeichnisse / javascript / css / images abzurufen, indem ich ihm nur die http-Root-Domain gebe?
Damon

# Den gesamten Inhalt von example.com herunterladen wget -r -l 0 example.com

Ja ... oder verwenden Sie den nativen Windows-Port, oder verwenden Sie Cygwin ...
Tmdean

2

Offensichtlich wurde WGet einige Male erwähnt. Die beste Benutzeroberfläche, die ich dafür gefunden habe, ist

Es gibt noch einige andere UIs für WGet, von denen einige Kandidaten für die schlimmste UI- Frage sind


1

Schauen Sie sich die Scrapbook-Erweiterung für Firefox an. Dabei leistet es erstaunliche Arbeit und lässt sich auch in Firebug integrieren. Sie können Elemente aus dem DOM löschen, bevor Sie speichern, wenn Sie möchten.


1

Sie müssen wget verwenden, das für die meisten Plattformen verfügbar ist. curl fordert Dokumente nicht rekursiv an, was eine der Hauptstärken von wget ist.

Linux: (normalerweise in der Distribution enthalten) 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/

BITTE stellen Sie sicher, dass Sie nicht auf die Website einhämmern - richten Sie geeignete Verzögerungen zwischen Anfragen ein und stellen Sie sicher, dass diese innerhalb der Nutzungsbedingungen der Website liegen.

-Adam


Eigentlich sind es unsere Server, die wir hämmern würden. Die Seite wird dynamisch über PHP generiert und das CMS / die DB wurde irgendwie entstellt. Es ist eine verworrene Geschichte, ich bin der Entwickler, der gerade hier angekommen ist. Aber wir bauen jetzt alles in Django, also brauchen Sie sich keine Sorgen zu machen.
damon

1

Als ich meinen Kommentar in GWLlosas Post verfolgte, fiel mir ein, dass ich GnuWin32 installiert habe und dass es einen Windows-Port von wget enthält.

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 Der Parameter: weist wget an, alle Dateien, einschließlich Bilder, einzuschließen.
  • -e robots=off : ignoriere die Regeln von sites robots.txt
  • -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" : Zeichenfolge des Benutzeragenten
  • --random-wait : Vermeiden Sie, auf die schwarze Liste gesetzt zu werden
  • --limit-rate=20k : begrenzt die Rate, mit der Dateien heruntergeladen werden.
  • -b : setzt wget nach dem ausloggen fort.

Dies sind die Parameter, die ich benutze. Ich füge auch eine -c(oder --continue) Option hinzu, wenn etwas schief geht und ich den Prozess neu starten muss.
kub1x


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.