Nói wget không để URL nhện phù hợp với một mẫu?


8

Tôi muốn kiểm tra xem trang web của tôi sẽ hoạt động như thế nào khi được xem xét. Tuy nhiên, tôi muốn loại trừ tất cả các URL có chứa từ "trang". Tôi đã thử:

$ wget -r -R "*page*" --spider --no-check-certificate -w 1 http://mysite.com/

Các -Rlá cờ có nghĩa vụ phải từ chối mẫu URL có chứa từ "trang". Ngoại trừ việc nó dường như không hoạt động:

Spider mode enabled. Check if remote file exists.
--2014-06-10 12:34:56--  http://mysite.com/?sort=post&page=87729
Reusing existing connection to [mysite.com]:80.
HTTP request sent, awaiting response... 200 OK

Làm cách nào để loại trừ spidering của URL đó?

Câu trả lời:


10

Sau một số thử nghiệm và lỗi, tôi nhận ra giải pháp chỉ đơn giản là sử dụng --reject-regexnhư thế này:

wget -r --reject-regex page --spider --no-check-certificate -w 1 http://mysite.com/

Urlregex không được chứa ký tự đại diện và do đó *page*không hợp lệ, nhưng pagelà.


1

Từ man wget:

-R rejlist --reject rejlist
           Specify comma-separated lists of file name suffixes or patterns to
           accept or reject.

Tùy chọn này sẽ chỉ từ chối các tệp phù hợp với mẫu.

Nói một cách chính xác, trong URL của bạn pagelà một tham số yêu cầu, không phải là phần cuối cùng của đường dẫn (ví dụ: tên tệp).


Bạn có thể muốn kết xuất tất cả các URL đã tìm thấy (ví dụ: grep nhật ký cho tất cả các URL đã tải xuống), xóa các URL không thỏa mãn bạn (ví dụ như với grep -v) và cuối cùng làm cho wget lấy lại các URL còn lại. Ví dụ:

# dump the whole website
wget ... -P dump -o wget.log  ...

# extract URLs from the log file
cat wget.log | grep http | tr -s " " "\012" | grep http >urls

# excludes URLs with the word page anywhere in it
cat urls | grep -v page >urls 

# delete previous dump, since it probably contains unwanted files
rm -rf dump

# Fetch URLs
cat urls | xargs wget -x

Bạn có thể muốn thêm các tùy chọn wget khác (ví dụ: --no-check-cert) theo nhu cầu của bạn.


Tôi đã đọc hướng dẫn một vài lần. Như bạn có thể thấy, nó nói "hậu tố hoặc mẫu tên tệp ", vì vậy không rõ ràng nếu mẫu phải là tên tệp. Tuy nhiên, tôi đang tìm kiếm một giải pháp cho phép loại trừ một mẫu URL cụ thể.
Câu hỏi tràn

@QuestionOverflow Xem bản chỉnh sửa cho một ví dụ về cách bạn có thể làm điều đó.
hellodanylo

Tùy chọn thứ hai của bạn sẽ thu thập toàn bộ trang web, tải xuống mọi thứ. Sau đó, nó sẽ tải xuống gần như mọi thứ lần thứ hai. Sẽ hiệu quả hơn khi tải xuống mọi thứ và sau đó xóa những phần không thỏa mãn bạn.
dhasenan
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.