Bỏ qua các tên miền khác khi tải xuống với wget?


13

Tôi muốn thu thập các liên kết trong www.website.com/XYZ và chỉ tải xuống các liên kết nằm dưới www.website.com/ABC.

Tôi đang sử dụng lệnh wget sau để nhận các tệp tôi muốn:

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

Điều này hoạt động hoàn hảo khi tôi sử dụng wget 1.13.4. Nhưng vấn đề là tôi phải sử dụng lệnh này trên một máy chủ có w11 1.11 và khi tôi sử dụng cùng một lệnh, nó sẽ tải xuống các tên miền bổ sung như:

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

Làm thế nào tôi có thể tránh vấn đề này? Tôi đã thử sử dụng

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

Tuy nhiên, nó tiếp tục tải xuống các tên miền.

Cũng lưu ý rằng tôi không thể sử dụng --no-parentvì các tệp tôi muốn ở cấp cao hơn (tôi muốn các tệp trong website.com/ABC bằng cách thu thập các liên kết trong website.com/XYZ).

Có gợi ý nào không?


Không sử dụng URL "giả" và không sử dụng URL của trang web không liên quan đến vấn đề của bạn. Các tên miền bạn liệt kê không phải là "tên miền phụ", chúng chỉ là các tên miền khác nhau, có thể thuộc cùng một công ty.
guntbert

Có vài điều sai sót ở đây. wgetkhông nên vượt qua các máy chủ theo mặc định và bạn cần tùy chọn -H/ --span-hostsđể vượt qua các máy chủ khi thực hiện một wget đệ quy. "www.website.com" là một máy chủ hoàn toàn khác với "www.website.de".
jw013

@guntbert xin lỗi, tôi nghĩ việc cung cấp url thực sự sẽ là một vấn đề. Tất nhiên, trang web tôi muốn thu thập thông tin không phải là trang web.com. nhưng khi tôi thu thập dữ liệu example.com, tôi cũng thấy example.it, example.de trong thư mục chính (cùng cấp với example.com).
dùng2779485

@ jw013 như tôi đã nói ở trên, khi tôi chỉ cung cấp www.example.com/x, nó cũng thu thập dữ liệu www.example.de, www.example.it. NHƯNG điều này chỉ xảy ra với wget 1.11 chứ không phải 1.13 .. Vì vậy, đó là lý do tại sao tôi rất bối rối.
dùng2779485

Điều này trông giống như một lỗi: wget 1.11 không nên cư xử khác đi, -Hluôn được yêu cầu lặp lại bên ngoài máy chủ ban đầu. Có -D www.website.comgiúp được không?
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


5

Cái này sai:

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

Cách đúng là:

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

Từ trang wget man:

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

không phải danh sách sẽ được tách ra?
rubo77 14/07/2015

@ rubo77 Bạn nói đúng, tôi đã thay đổi điều đó.
Daniel Werner

17

Bạn có thể thử --max-redirect 0hoặc sử dụng --domains example.com như đối diện với --exclude-domains example.com.

Xem:

  -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
Điều này tốt hơn câu trả lời được chấp nhận nếu bạn thích liệt kê trắng các tên miền thay vì danh sách đen
yunzen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.