Wget ile tek bir web sayfasını (arka plan görüntüleri ile) kaydedin


73

Tekli web sayfalarını (özyinelemeli değil, bütün siteleri değil) referans olarak kaydetmek için Wget'ı kullanmak istiyorum. Firefox’un “Web Sayfası, tamamlandı” gibi.

İlk sorunum: Cget’te belirtilen arka plan resimlerini Wget’e kaydedemiyorum. Arka plan görüntüsü dosyalarını kaydetmiş olsa bile, bence - convert-links, CSS dosyasındaki arka plan görüntüsü URL'lerini yerel olarak kaydedilen arka plan görüntülerine işaret edecek şekilde dönüştürür. Firefox'ta da aynı sorun var.

İkinci sorunum: Sayfada görüntüler varsa kaydetmek istiyorum, başka bir sunucuda barındırılan (reklamlar gibi) bunlar dahil edilmeyecek. --span-hosts bu sorunu aşağıdaki satırdan çözüyor gibi görünmüyor.

Kullanıyorum: wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off http://domain.tld/webpage.html


1
tam olarak aynı satırda (wget --no-parent --timestamping --convert-links - sayfa-requisites - no-dizinler - no-host-dizinler -erobots = off domain.tld) ​​aslında başvurulan arka plan resimlerini kaydeder 1.12'ye güncelledikten sonra CSS. El kitabında şöyle yazıyor: "http url'leri ile Wget, verilen url'den html veya css'yi alır ve ayrıştırır, href veya src gibi işaretleme yoluyla belgenin referans aldığı dosyaları veya 'url ()' işlevini kullanarak belirtilen css uri değerlerini alır. notasyonu." İkinci sorunun hala çözülmesi gerekiyor
user14124

Yanıtlar:


106

Gönderen Wget adam sayfası :

Aslında, tek bir sayfa ve tüm gereksinimlerini (ayrı web sitelerinde bulunsalar bile) indirmek ve partinin yerel olarak düzgün görüntülendiğinden emin olmak için, bu yazar '-p' seçeneğine ek olarak birkaç seçenek kullanmayı sever:

wget -E -H -k -K -p http://www.example.com/

Ayrıca robots.txt, izin vermemeniz durumunda-e robots=off


Görünüşe göre js ve css'i mutlak URL'lere yeniden yazıyor gibi görünüyor
Greg Dean

1
nihayetinde, robots.txt idi, bana geçici çözümle cevabı güncellememe izin vermemiştim
Greg Dean

19
Genişletilmiş:wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites [url]
sam

4
Ya da daha iyisi wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows[url]
Petah

@ {etah: Emrinizle emrinizi denedim, belirtilenlerin dışında başka web sayfalarını da indirecek.
Tim

7

wgetKomut seçeneği sunar --mirroraynı şeyi yapar:

$ wget -r -N -l inf --no-remove-listing

Ayrıca -x, ana bilgisayar adı da dahil olmak üzere site için tam bir dizin hiyerarşisi oluşturmak için de atabilirsiniz .

wgetAncak , en yeni sürümünü kullanmıyorsanız, bunu bulamayabilirsiniz .


1
Bu muhtemelen tüm web sitesini alt URL'leriyle
tarayacaktır

2

Kulağa hoş geliyor wgetve Firefox bu dosyaları indirme işlemine dahil etmek için CSS’leri ayrıştırmıyor. Neler yapabileceğinizi belirleyerek ve kaçırdığınız dosyaların bir listesini oluşturmak için indirilen dosyalardaki herhangi bir CSS veya Javascript’ten link çıkarımını kodlayarak bu sınırlamaları çözebilirsiniz. Ardından wget, bu bağlantı listesindeki ikinci bir çalıştırma kaçırılan öğeyi alabilir ( -ibir dosya listeleme URL’leri belirtmek için bayrağı kullanın).

Perl'den hoşlanıyorsanız , CPAN'da bir CSS :: Parser modülü var, bu şekilde bağlantıları çıkarmak için kolay bir yol sunar.

Hangi sayfanın alınacağını belirlemek wgetiçin yalnızca belirli html işaretlemesini ( href/ src) ve css uris ( url()) 'nin ayrıştırdığını unutmayın . Almadığınız 3. taraf görüntülerin Javascript aracılığıyla eklenip eklenmediğini anlamak için DOM Inspector veya Firebug gibi Firefox eklentilerini kullanmayı deneyebilirsiniz - öyleyse, bunları almak için bir komut dosyasına veya Firefox eklentisine başvurmanız gerekir çok.


Benim ilk yazı yorumumda dediğim gibi v1.12'de düzeltildi. Yine de diğer sunuculardaki görüntüleri nasıl ekleyeceğimi hala bilmiyorum.
user14124

evet, CSS ayrıştırma wget v1.12 yeni olan, bu değişmek üst kısmında: freshmeat.net/urls/376000c9c7a02f7a3592180c2390ff04
şarlatan Kişot

-H seçeneğini listeye eklemeyi deneyin. - -span-host anlamına gelir ve içeriğin harici hostlardan indirilmesine izin verir.
Michael

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.