Abaikan domain "lainnya" saat mengunduh dengan wget?

13

Saya ingin menjelajah tautan di bawah www.website.com/XYZ dan hanya mengunduh tautan yang di bawah www.website.com/ABC.

Saya menggunakan perintah wget berikut untuk mendapatkan file yang saya inginkan:

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

Ini berfungsi dengan baik ketika saya menggunakan wget 1.13.4. Tetapi masalahnya adalah saya harus menggunakan perintah ini di server yang memiliki wget 1.11 dan ketika saya menggunakan perintah yang sama, akhirnya mengunduh domain tambahan seperti:

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

Bagaimana saya bisa menghindari masalah ini? Saya mencoba menggunakan

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

namun itu terus mengunduh domain tersebut.

Perhatikan juga bahwa saya tidak dapat menggunakan --no-parentkarena file yang saya inginkan ada di tingkat atas (Saya ingin file di bawah situs web.com/ABC dengan merayapi tautan di bawah situs web.com/XYZ).

Ada petunjuk?

pengguna2779485
sumber
Jangan gunakan URL "palsu", dan jangan gunakan URL situs yang tidak ada hubungannya dengan masalah Anda. Domain yang Anda daftarkan sama sekali bukan "subdomain", mereka hanya domain yang berbeda, mungkin milik perusahaan yang sama.
guntbert
Ada yang salah di sini. wgetseharusnya tidak melewati host secara default, dan Anda memerlukan -H/ --span-hostsopsi untuk melewati host ketika melakukan wget rekursif. "www.website.com" adalah host yang sama sekali berbeda dari "www.website.de".
jw013
@ Guntbert maaf, saya pikir memberikan url yang sebenarnya akan menjadi masalah. tentu saja, situs web yang ingin saya jelajahi bukanlah situs web.com. tetapi ketika saya menjelajah example.com, saya juga melihat example.it, example.de di direktori utama (tingkat yang sama dengan example.com).
user2779485
@ jw013 seperti yang saya katakan di atas, ketika saya hanya memberikan www.example.com/x juga merangkak www.example.de, www.example.it. TAPI ini hanya terjadi dengan wget 1.11 bukan 1.13 .. Jadi itu sebabnya saya sangat bingung.
user2779485
Ini terlihat seperti bug: wget 1.11 seharusnya tidak berperilaku berbeda, -Hselalu diminta untuk muncul kembali di luar host asli. Apakah -D www.website.commembantu?
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

5

Ini salah:

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

Cara yang benar adalah:

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

Dari halaman manual wget:

--exclude-domains domain-list
      Specify the domains that are not to be followed.
Radu Rădeanu
sumber
bukankah daftar harus dipisahkan komma?
rubo77
@ rubo77 Anda benar, saya telah mengubahnya.
Daniel Werner
17

Anda dapat mencoba --max-redirect 0atau menggunakannya --domains example.com sebagai kebalikan dari --exclude-domains example.com.

Lihat:

  -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.
kenorb
sumber
5
Ini lebih baik daripada jawaban yang diterima jika Anda suka mencantumkan putih domain daripada daftar hitam
yunzen