WGET'i, CSS görüntüleri dahil JS, CSS kaynaklarını kurtarıp 1 düzey derinlikte bir siteyi yansıtmak için nasıl kullanıyorsunuz?


11

Kalıcı tutma için basit bir sayfa kopyasının HD'ye indirilmesini istedim. Ben derin bir özyinelemeli olsun, sadece tek bir sayfa değil, aynı zamanda o sayfa tarafından yüklenen herhangi bir kaynak da indirmek için arıyorum.

Örnek: https://www.tumblr.com/

Expect:

  • İndex.html
  • Yüklenen görüntüler
  • Yüklenen tüm JS dosyaları
  • Yüklenen CSS dosyaları
  • CSS dosyasına yüklenen görüntüler
  • indirilen kopyalarla çalışmak üzere yerelleştirilmiş sayfa kaynakları için bağlantılar (web bağımlılığı yok)

En iyi wget sözdizimini veya bunu yapacak başka bir aracı bulmama yardım edip edemeyeceğinizi bilmek istiyorum. Denediğim araçlar genellikle CSS tarafından yüklenen görüntüleri alamıyor, bu nedenle sayfa yerel olarak yüklendiğinde asla düzgün görünmüyor. Teşekkür ederim!

Teğet Çözüm

FireFox kullanarak bunu yapmanın bir yolunu buldum. Varsayılan kaydetme bozuldu ve görünüşe göre bununla iyi bir iş yapabilen "Save Complete" adlı bir eklenti var. Ancak, mevcut FireFox sürümünde desteklenmediğini söylediği için indiremezsiniz. Bunun nedeni şu eklentiye aktarılmış olması: "Mozilla Arşiv Formatı". Bunu yükleyin, ardından Dosya> "Sayfayı Farklı Kaydet .." komutunu kullandığınızda, FireFox'un kullandığı (korkunç olan) uygulama uygulamasını düzelten eski eklenti olan "Web Sayfası, tamamlandı" adlı yeni bir seçenek vardır. Bu bir WGET çözümü değildir, ancak uygulanabilir bir çözüm sunar.

EDIT: Gelecekte bu soruyu takip ediyor olabilir herkes için başka saçma bir sorun, bunu yapmaya çalışıyor. Eklentinin düzgün çalışmasını sağlayın Araçlar> Mozilla Arşiv Biçimi ve "Tamamlandı sayfasının sadık bir görüntüsünü al" varsayılan ayarını "Kaydet Tamamlandı'yı kullanarak komut dosyalarını ve kaynağı korumak" olarak değiştirmeniz gerekir, aksi takdirde eklenti tümünü boşaltır komut dosyalarınızı değiştirin ve bunları "/ * komut dosyası anlık görüntü kaydetme * /" ile kaldırıldı.


dosyası> firefox veya diğer tarayıcılarda olduğu gibi kaydet, tüm resimleri, js ve css dosyalarını
indirir

Dosyaları gerçekten istiyor musunuz yoksa sayfanın doğru şekilde oluşturulmuş bir sürümünü mü istiyorsunuz?

Dosyaları istiyorum, yine de sayfayı doğru bir şekilde işlemek gerekir. Onlara sahip olmasaydın farklı olurdu. Dosya> Farklı Kaydet, Firefox'ta çalışmıyor. Bunu yaparsanız, css görüntülerini alamazsınız. Tumblr.com/login adresinde deneyin . Arka plan resmi eksik, giriş alanları için bg resmi eksik.

Hiçbir çözüm benim için işe yaramadı. Teğet Çözümüm, bu tür site tasarrufunu elde etmenin en iyi yoludur. Ancak, büyük olasılıkla kaynak yollarının birçoğu javascript yürütülerek, bazıları hemen değil ama bir tür ajax yürütme sırasında dinamik olarak oluşturulduğundan, apple.com gibi çok karmaşık sayfalarda başarısız olduğunu gördüm .
Lana Miller

Yanıtlar:


12

wget -p -k http://ExampleSite.com

-P, siteyi doğru görüntülemek için gerekli tüm öğeleri (css, resimler, vb.) -K, sayfayı çevrimiçi göründüğü gibi çevrimdışı görüntülemenize olanak sağlamak için tüm bağlantıları (CSS ve resimler için olanlar dahil) değiştirir.

Güncelleme: Bu örnek sitenize özgü: tumblr.com

wget -H -N -k -p --exclude-domains quantserve.com --no-check-certificate -U "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0a2) Gecko/20110613 Firefox/6.0a2" https://www.tumblr.com

Arıza:

-H = Wget'in yabancı bir sunucuya yayılmasına izin verir. Tumblr'ın görselleri aynı sayfada ön sayfada bulunmadığından, secure.assets.tumblr.com adresini kullanarak alan adları hariç tutma notuna bakın.

-N = aynı sayfayı zaman içinde tekrar indirmeniz durumunda, şu an sahip olduğunuzdan daha yeni olan dosyaları alır

-k = bağlantılarınızı çevrimdışı görüntülemek için dönüştürün

-p = doğru görüntülemek için gerekli tüm öğeleri alır (css, resimler, vb.)

--exclude-domains = tumblr.com ana sayfasında quantserve.com için bir bağlantı olduğundan ve bu şeyleri istemediğinizi tahmin ediyorum, bunu wget indirmenizden hariç tutmanız gerekiyor. Not : Bu, bir siteye giderseniz ve dış ana bilgisayarlar için birden fazla bağlantıya sahipse (reklamverenleri ve analitik şeyleri düşünürseniz) -H ile kullanmanız gereken oldukça önemlidir.

- tumblr https kullandığından no-check-certificate gerekli

-U kullanıcı-aracısını değiştirir. Bu örnekte varsayılan wget kullanıcı aracısına izin verdiği için gerçekten gerekli değil, ancak bazı sitelerin bunu engelleyeceğini biliyorum. Ben sadece buraya attı böylece diğer sitelerde herhangi bir sorunla karşılaşırsanız. Verdiğim örnek pasajda Mozilla Firefox 6.02a olarak görünüyor

Sonunda siteniz var: https://www.tumblr.com


1
Bunu denedim, herhangi bir JS veya CSS veya görüntü dosyası alamadım. Öyle mi?

Tumblr'da kullanıyorsanız (yukarıdaki örnek), --no-check-certificate belirtmeniz gerekebilir.

Bence haklısın, muhtemelen bu seçeneğe ihtiyacı var. Ancak index.html dışında bir şey yok. Bir şey eksik ...

@LanaMiller Cevabımı güncelledim. Herhangi bir sorun olup olmadığını bildirin.

-Exclude-domains! = Tumblr.com gibi bir şey yapamaz mısınız?
alpha1

3

Bahsettiğiniz belirli bir site için ve wget (ve curl) gibi kodlanmış birçok kişi için işe yaramaz. Sorun, sayfayı bir tarayıcıda oluşturmak için gereken varlık bağlantılarının bir kısmının kendisinin javascript yoluyla oluşturulmasıdır. Wget, javascript çalıştırmayı bekleyen bir özellik isteğine sahiptir:

http://wget.addictivecode.org/FeatureSpecifications/JavaScript

Bununla birlikte, javascript kullanarak varlık bağlantıları oluşturan tam siteler wget kullanılarak klonlanamaz. En kolay çözüm, aslında bir DOM oluşturup bir javascript'i tarayıcı motoru gibi (yani bahsettiğiniz firefox yöntemi) ayrıştıran bir araç bulmaktır.


1

Bunu ayrıca wget kullanarak shell üzerinden bir komut vererek otomatik olarak (veya kodlama yaparsanız programlı olarak) yapabilirsiniz:

wget --convert-links -r http://www.yourdomain.com

Sayfayı ve dahili dosyaları indirir ve bağlantıları yerel yapar.


1
Bu her şeyi alacak . Soruyu okuyun.
3'te evgeny

-1
wget -r http://www.example.com

Sanırım bu her şeyi kapacak, ama denemek ve öğrenmek.


1
Çok fazla olan her şeyi alır. Şimdiye kadar bulduğum FireFox çözümü en iyi çalışma çözümü. İhtiyacınız olanı alır ve başka bir şey değildir.

-1

$ ( erkek wget ):

-p

--page koşul

Bu seçenek, Wget'in belirli bir HTML sayfasını düzgün görüntülemek için gerekli olan tüm dosyaları indirmesine neden olur. Bu, eğik görüntüler, sesler ve başvurulan stil sayfaları gibi şeyleri içerir.

Normalde, tek bir HTML sayfası indirilirken, düzgün görüntülenmesi için gerekli olabilecek belgeler indirilmez. -R'yi -l ile birlikte kullanmak yardımcı olabilir, ancak Wget normalde harici ve satır içi belgeler arasında ayrım yapmadığından, genellikle gereksinimlerini eksik olan '' yaprak belgeler '' ile bırakılır.

Örneğin, 1.html dokümanı, 1.gif referansına sahip bir "<IMG>" etiketi ve 2.html harici dokümanı işaret eden bir "<A>" etiketi içeriyor. 2.html öğesinin benzer olduğunu, ancak görüntüsünün 2.gif olduğunu ve 3.html dosyasına bağlandığını varsayalım. Diyelim ki bu, keyfi olarak yüksek sayıda devam ediyor.

Biri komutu yürütürse:

wget -r -l 2 http: // <site> /1.html

daha sonra 1.html, 1.gif, 2.html, 2.gif ve 3.html indirilir. Gördüğünüz gibi, 3.html gerekli 3.gif'e sahip değildir çünkü Wget, özyinelemeyi nerede durduracağınızı belirlemek için 1.html'den sadece atlama sayısını (2'ye kadar) sayar. Ancak, bu komutla:

wget -r -l 2 -p http: // <site> /1.html

yukarıdaki tüm dosyalar ve 3.html gerekli 3.gif indirilecektir. Benzer şekilde,

wget -r -l 1 -p http: // <site> /1.html

1.html, 1.gif, 2.html ve 2.gif'in indirilmesine neden olur. Birisi şöyle düşünebilir:

wget -r -l 0 -p http: // <site> /1.html

sadece 1.html ve 1.gif indirir, ancak maalesef bu böyle değildir, çünkü -l 0 -l inf --- 'e eşittir, yani sonsuz özyineleme. Tek bir HTML sayfasını (veya bunların birçoğunu komut satırında veya bir -i URL giriş dosyasında belirtilen) ve onun (veya onların) gereksinimlerini indirmek için, -r ve -l öğelerini bırakmanız yeterlidir:

wget -p http: // <site> /1.html

Wget'in -r belirtilmiş gibi davranacağını, ancak yalnızca o tek sayfanın ve gereksinimlerinin indirileceğini unutmayın. Bu sayfadan harici belgelere bağlantılar izlenmez. Aslında, tek bir sayfayı ve tüm gereksinimlerini (ayrı web sitelerinde mevcut olsalar bile) indirmek ve lotun yerel olarak düzgün görüntülendiğinden emin olmak için, bu yazar -p'ye ek olarak birkaç seçenek kullanmayı sever:

wget -E -H -k -K -p http: // <site> / <belge & gt ;

Bu konuyu bitirmek için, Wget'in harici belge bağlantısı fikrinin "<A>" etiketinde, "<AREA>" etiketinde veya "<LINK>" etiketinde "< LINK REL = "stil sayfası"> ".


2
Sizce bunun hangi kısmı çözüme benziyor? Çünkü man sayfasının içeriğini okumaya çalıştım ve burada doğru çözümü göremiyorum. Bunlardan herhangi birini kendin denedin mi? Sizce komut, soruyu özel olarak ele almasıdır.
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.