Bir Siteyi Yinelemeli Olarak Taramak ve Resimleri İndirmek için Wget'i Kullanma


13

Bir web sitesini özyinelemeli olarak taramak ve yalnızca belirli türdeki resimleri indirmek için nasıl uyarırsınız?

Bir siteyi taramak ve sadece Jpeg resimleri indirmek için bunu kullanmayı denedim:

wget --no-parent --wait=10 --limit-rate=100K --recursive --accept=jpg,jpeg --no-directories http://somedomain/images/page1.html

Ancak, page1.html, resimlere doğrudan bağlantıları olan yüzlerce alt sayfaya bağlantı içeriyor olsa da, "subpage13.html dosyasının reddedilmesi gerektiği için kaldırılması" gibi şeyler bildirir ve hiçbiri doğrudan bağlantılı olmadığından hiçbir resmi indirmez Başlangıç ​​sayfasından.

Bunun benim --accept'inizin hem tarama hem de içeriği filtrelemeye yönlendirdiği için kullanıldığını varsayıyorum, oysa ben sadece içeriğin indirilmesini yönlendirmek için kullanıyorum. Wget'in tüm bağlantıları nasıl tarayacağını, ancak yalnızca * .jpeg gibi belirli uzantılara sahip dosyaları nasıl indirebilirim?

EDIT: Ayrıca, bazı sayfalar dinamiktir ve bir CGI betiği (örn. İmg.cgi? Fo9s0f989wefw90e) aracılığıyla oluşturulur. Kabul listeme cgi eklesem bile (örn. --Accept = jpg, jpeg, html, cgi) bunlar her zaman reddedilir. Bunun etrafında bir yol var mı?

Yanıtlar:


5

Neden kullanmaya çalışmıyorsun wget -A jpg,jpeg -r http://example.com?


Soru, bazı görüntülerin /url/path.cgi?query biçiminde olduğunu belirtmektedir, bu nedenle öneriniz bunları getirmeyecektir.
Charles Stewart

1

Eğer wget'in indirilmesine izin verilmiyorsa subpage13.html içeriğini (ve bağlandığı jpg'leri) nasıl bilmesini beklersiniz. HTML'ye izin vermenizi, istediğinizi almanızı ve ardından istemediğinizi kaldırmanızı öneririm.


Cgi'lerinizin neden reddedildiğinden emin değilim ... wget tarafından herhangi bir hata çıktısı var mı? Belki de wget verbose ( -v) yap ve gör. Ayrı bir soru olarak en iyisi olabilir.

Bununla birlikte, bant genişliği ile ilgileniyorsanız ve lotları indirirseniz, sonra istemediklerinizi kaldırın, önemli değil.


Ayrıca kontrol et --html-extension

Man sayfasından:

-E

--html yayılma

Application / xhtml + xml veya text / html türünde bir dosya indirilirse ve URL normal ifadeyle bitmezse. [Hh] [Tt] [Mm] [Ll]?, Bu seçenek .html sonekinin yerel dosya adına eklenir. Bu, örneğin .asp sayfaları kullanan uzak bir siteyi yansıtırken, ancak yansıtılan sayfaların stok Apache sunucunuzda görüntülenmesini istediğinizde kullanışlıdır. Bunun bir başka iyi kullanımı da CGI ile üretilen materyalleri indirmektir. Http://site.com/article.cgi?25 gibi bir URL article.cgi? 25.html olarak kaydedilecektir.

Wget yerel X.html dosyasının uzak URL X'e karşılık geldiğini söyleyemediğinden (URL'nin tür çıktısı ürettiğini henüz bilmediğinden, bu şekilde değiştirilen dosya adlarının bir siteyi her yeniden yansıttığınızda yeniden indirileceğini unutmayın. text / html veya application / xhtml + xml Bu yeniden indirmeyi önlemek için, dosyanın özgün sürümünün X.orig olarak kaydedilmesi için -k ve -K kullanmanız gerekir.


--restrict-file-names=unix bu cgi URL'leri nedeniyle de yararlı olabilir ...


Ben wget seçenekleri bağlantı durdurmak gerekir .. işaret etmek üzereydi --no-parentama orada duracağım.
Pahalı

0

MetaProducts Çevrimdışı Gezgini'ni programlama olmadan da kullanabilirsiniz


-1

--page-requisitesSeçeneği eklemeyi deneyin


Bağlı tüm ortamları indirir. Görüntüleri indirmek için wget kullanmanın tek yolu bir sayfadaki TÜM içeriği indirmek mi ?!
Cerin
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.