Unduh salinan laman web lokal yang berfungsi [ditutup]

211

Saya ingin mengunduh salinan lokal halaman web dan mendapatkan semua css, gambar, javascript, dll.

Dalam diskusi sebelumnya (misalnya di sini dan di sini , keduanya lebih dari dua tahun), dua saran umumnya diajukan: wget -pdan httrack . Namun, kedua saran ini gagal. Saya akan sangat menghargai bantuan dengan menggunakan salah satu alat ini untuk menyelesaikan tugas; alternatif juga indah.


Pilihan 1: wget -p

wget -pberhasil mengunduh semua prasyarat halaman web (css, gambar, js). Namun, ketika saya memuat salinan lokal di browser web, halaman tidak dapat memuat prasyarat karena jalur ke prasyarat tersebut belum dimodifikasi dari versi di web.

Sebagai contoh:

  • Dalam html halaman, <link rel="stylesheet href="https://stackoverflow.com/stylesheets/foo.css" />perlu diperbaiki untuk menunjuk ke jalur relatif barufoo.css
  • Dalam file css, hal yang background-image: url(/images/bar.png)sama perlu disesuaikan.

Apakah ada cara untuk memodifikasi wget -psehingga jalurnya benar?


Opsi 2: httrack

httracksepertinya alat yang bagus untuk mem-mirroring seluruh situs web, tetapi tidak jelas bagi saya bagaimana menggunakannya untuk membuat salinan lokal dari satu halaman. Ada banyak diskusi di forum httrack tentang topik ini (misalnya di sini ) tetapi tampaknya tidak ada yang punya solusi anti peluru.


Opsi 3: alat lain?

Beberapa orang menyarankan alat berbayar, tetapi saya tidak percaya tidak ada solusi gratis di luar sana.

brahn
sumber
19
Jika jawabannya tidak berhasil, coba: wget -E -H -k -K -p http://example.com- hanya ini yang berhasil untuk saya. Kredit: superuser.com/a/136335/94039
its_me
Ada juga perangkat lunak untuk melakukan itu, Teleport Pro .
pai
3
wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com
davidcondrey

Jawaban:

262

wget mampu melakukan apa yang Anda minta. Coba saja yang berikut ini:

wget -p -k http://www.example.com/

Ini -pakan memberi Anda semua elemen yang diperlukan untuk melihat situs dengan benar (css, gambar, dll). Kami -kakan mengubah semua tautan (untuk memasukkan tautan untuk CSS & gambar) untuk memungkinkan Anda melihat halaman secara offline saat ditampilkan secara online.

Dari dokumen Wget:

‘-k’
‘--convert-links’
After the download is complete, convert the links in the document to make them
suitable for local viewing. This affects not only the visible hyperlinks, but
any part of the document that links to external content, such as embedded images,
links to style sheets, hyperlinks to non-html content, etc.

Each link will be changed in one of the two ways:

    The links to files that have been downloaded by Wget will be changed to refer
    to the file they point to as a relative link.

    Example: if the downloaded file /foo/doc.html links to /bar/img.gif, also
    downloaded, then the link in doc.html will be modified to point to
    ‘../bar/img.gif’. This kind of transformation works reliably for arbitrary
    combinations of directories.

    The links to files that have not been downloaded by Wget will be changed to
    include host name and absolute path of the location they point to.

    Example: if the downloaded file /foo/doc.html links to /bar/img.gif (or to
    ../bar/img.gif), then the link in doc.html will be modified to point to
    http://hostname/bar/img.gif. 

Because of this, local browsing works reliably: if a linked file was downloaded,
the link will refer to its local name; if it was not downloaded, the link will
refer to its full Internet address rather than presenting a broken link. The fact
that the former links are converted to relative links ensures that you can move
the downloaded hierarchy to another directory.

Note that only at the end of the download can Wget know which links have been
downloaded. Because of that, the work done by ‘-k’ will be performed at the end
of all the downloads. 
serk
sumber
2
Saya mencoba ini, tetapi entah bagaimana tautan internal seperti index.html#link-to-element-on-same-pageberhenti berfungsi.
ulangan
12
Beberapa server akan merespons dengan kode 403 jika Anda menggunakan wget tanpa Agen Pengguna, Anda dapat menambahkan-U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4'
nikoskip
45
Jika Anda menemukan Anda masih kehilangan gambar dll .. kemudian coba tambahkan ini: -e robot = off ..... wget benar-benar membaca dan menghormati robots.txt - ini benar-benar menyulitkan saya untuk mencari tahu mengapa tidak ada bekerja!
John Hunt
24
untuk mendapatkan sumber daya dari host asing gunakan-H, --span-hosts
davidhq