Thoát chuỗi truy vấn với wget --mirror


15

Tôi đang sử dụng wget --mirror --html-extension --convert-linksđể phản chiếu một trang web, nhưng tôi kết thúc với rất nhiều tên tệp ở định dạng post.php?id=#.html. Khi tôi cố gắng xem những thứ này trong trình duyệt thì không thành công, vì trình duyệt bỏ qua chuỗi truy vấn khi tải tệp. Có cách nào để thay thế ?nhân vật trong tên tập tin bằng cái gì khác không?


Câu trả lời --restrict-file-names=windowslàm việc chính xác. Kết hợp với các cờ --convert-links--adjust-extension/ -E(tên trước đây --html-extension, cũng hoạt động nhưng không được dùng nữa), nó tạo ra một tấm gương hoạt động như mong đợi.

wget  --mirror --adjust-extension --convert-links --restrict-file-names=windows http://www.example

Câu trả lời:


16

Xem --restrict-file-namestùy chọn. Mặc dù không có ý định chính xác cho mục đích cụ thể này, nhưng --restrict-file-names=windowscó lẽ sẽ giúp bạn thực hiện:

--restrict-file-name = mode

Thay đổi những ký tự được tìm thấy trong các URL từ xa phải được thoát trong quá trình tạo tên tệp cục bộ. [...]

Khi "cửa sổ" được cung cấp, Wget thoát các ký tự \, |, /,:,?, ", *, <,> Và các ký tự điều khiển trong phạm vi 0--31 và 128--159. , Wget trong chế độ Windows sử dụng + thay vì: để tách máy chủ và cổng trong tên tệp cục bộ và sử dụng @ thay vì? Để tách phần truy vấn của tên tệp khỏi phần còn lại. Do đó, URL sẽ được lưu dưới dạng www. xemacs.org:4300/search.pl?input=blah trong chế độ Unix sẽ được lưu dưới dạng www.xemacs.org+4300/search.pl@input=blah trong chế độ Windows.


2

Trình duyệt của bạn sẽ xem nó tốt nếu bạn sử dụng một URL như

file:///tmp/example.com/post.php%3Fid=1.html

thay vì

file:///tmp/example.com/post.php?id=1.html

Lưu ý: nếu bạn gặp sự cố với các liên kết nội bộ từ các tệp đã tải xuống, thì đó là do bạn đã chấm dứt wget trước khi quá trình tải xuống được thực hiện. Vì bạn đã chỉ định --convert-links và --html-extension (chỉ áp dụng khi được cung cấp), wget thường sẽ sửa các liên kết để sử dụng% 3F thay vì?; tuy nhiên, nó thực hiện điều này ở cuối, sau khi tải xong; nếu nó bị gián đoạn, nó sẽ không sửa bất kỳ liên kết nào và bạn sẽ ở trong tình trạng khó khăn này. Tất nhiên, bạn luôn có thể viết một tập lệnh để duyệt và sửa các liên kết, nhưng ...


điều này không hoàn toàn chính xác, wget, không bị gián đoạn, đối với một URL như http://site.com/article.cgi?25sẽ được lưu như article.cgi?25.htmlxem phần 2.7 tại gnu.org/software/wget/manual/wget.html#HTTP-Options
Tzury Bar Yochay

-2

wget không có tùy chọn để sửa đổi tên đã lưu. Những gì bạn có thể cần làm là tạo một kịch bản để đi qua và thay thế? với _ hoặc một cái gì đó tương tự. Wget một mình không thể làm điều này.

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.