Wget ile indirirken "diğer" alanları yoksay?


13

Www.website.com/XYZ altındaki bağlantıları taramak ve yalnızca www.website.com/ABC altındaki bağlantıları indirmek istiyorum.

İstediğim dosyaları almak için aşağıdaki wget komutunu kullanıyorum:

wget  -I ABC -r -e robots=off --wait 0.25  http://www.website.com/XYZ

Wget 1.13.4 kullandığımda bu mükemmel çalışıyor. Ama sorun wget 1.11 olan bir sunucuda bu komutu kullanmak zorunda ve aynı komutu kullandığınızda, gibi ek etki alanları indirerek sona erer:

www.website.de 
www.website.it 
...

Bu sorunu nasıl önleyebilirim? Kullanmayı denedim

--exclude domains=www.website.de,www.website.it

ancak bu alan adlarını indirmeye devam etti.

Ayrıca --no-parent, istediğim dosyalar daha üst düzeyde olduğu için kullanamayacağımı da unutmayın (website.com/XYZ altındaki bağlantıları tarayarak website.com/ABC altındaki dosyaları istiyorum).

İpucu var mı?


"Sahte" URL'ler kullanmayın ve sorununuzla ilgisi olmayan bir sitenin URL'sini kullanmayın. Listelediğiniz alan adları hiçbir şekilde "alt alan adları" değildir, bunlar yalnızca aynı şirkete ait olan farklı alanlardır.
guntbert

Burada bir şeyler yanlış. wgetvarsayılan olarak ana bilgisayarları geçmemelidir ve özyinelemeli bir wget yaparken ana bilgisayarları çaprazlamak için -H/ --span-hostsseçeneğine ihtiyacınız vardır . "www.website.com", "www.website.de" adresinden tamamen farklı bir barındırıcıdır.
jw013

@ guntbert üzgünüm, gerçek url vermek bir sorun olacağını düşündüm. elbette, taramak istediğim web sitesi website.com değil. example.com'u tararken ana dizinde example.it, example.de dosyasını da görüyorum (example.com ile aynı seviye).
user2779485

@ jw013 yukarıda söylediğim gibi, sadece www.example.com/x verdiğimde www.example.de, www.example.it dosyasını da tarar. ANCAK bu sadece 1.13 değil 1.11 wget ile olur .. Bu yüzden çok kafam karıştı.
user2779485

Bu bir hataya benziyor: wget 1.11 farklı davranmamalı, -Hher zaman orijinal ana bilgisayarın dışında geri çekilmeleri gerekiyordu. Yardımcı -D www.website.comolur mu?
Gilles 'SO- kötü olmayı bırak

Yanıtlar:


5

Bu yanlış:

--exclude domains=www.website.de,www.website.it

Doğru yol:

--exclude-domains www.website.de,www.website.it

Wget man sayfasından:

--exclude-domains domain-list
      Specify the domains that are not to be followed.

liste komma ayrılmamalı mı?
rubo77

@ rubo77 Haklısın, ben değiştirdim.
Daniel Werner

18

Bunun tersi olarak deneyebilir --max-redirect 0veya kullanabilirsiniz .--domains example.com--exclude-domains example.com

Görmek:

  -D,  --domains=LIST              comma-separated list of accepted domains.
       --exclude-domains=LIST      comma-separated list of rejected domains.
       --follow-tags=LIST          comma-separated list of followed HTML tags.
       --ignore-tags=LIST          comma-separated list of ignored HTML tags.
  -np, --no-parent                 don't ascend to the parent directory.
  --max-redirect                   maximum redirections allowed per page.

5
Kara listeleme yerine alan adlarını beyaz listelemeyi seviyorsanız bu kabul edilen yanıttan daha iyidir
yunzen
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.