trang thường có một hình thức đăng nhập có thể được tải vớiCách tải xuống các trang chuyển hướng sau khi đăng nhập?
wget --no-check-certificate --save-cookies cookies --keep-session-cookies \
--post-data="username=example&password=example" \
"https://example.com/index.php?title=Special:Userlogin&returntotitle="
wget --no-check-certificate --load-cookies=cookies \
--no-parent -r --level=2 -nc -E \
https://example.com/Special:Sitemap
Nhưng trong trường hợp của các trang web Dekiwiki, điều này không làm việc, nếu đăng nhập là bắt buộc.
Vấn đề vỉa được mô tả trong man wget
Lưu ý: nếu wget được chuyển hướng sau khi yêu cầu POST được hoàn thành, nó sẽ không gửi dữ liệu POST để URL được chuyển hướng. Điều này là do các URL xử lý POST thường phản hồi với chuyển hướng đến trang thông thường, không mong muốn hoặc chấp nhận POST. Nó không phải là hoàn toàn rõ ràng rằng hành vi này là tối ưu; nếu nó không hoạt động, có thể là đã thay đổi trong tương lai.
Câu hỏi
này có thể được thực hiện bằng Perl ví dụ với có lẽ HTML::TreeBuilder 3
hoặc HTML::TokeParser
hoặc Mechanize
hoặc bất kỳ mô-đun Perl nào khác?
Rất thú vị. Có thể phản chiếu trang web không? Trong ví dụ của tôi, tôi sử dụng '--no-parent -r --level = 2' của wget. –
Bạn có nghĩa là đệ quy tải xuống tất cả các trang được trỏ đến từ trang gốc không? Không, curl cũng không -r --level = 2 tương đương, tuy nhiên, libcurl, một giao diện API, có thể dễ dàng được lập trình để phân tích cú pháp trang html và tải xuống tất cả các liên kết trong trang đó. Libcurl có các ràng buộc cho các ngôn ngữ sau (và nhiều hơn nữa): C, C++, Java, Lisp, .NET, Object-Pascal, Pascal, Perl, PHP, Python, Ruby, Visual Basic – Motes
@Motes, "-cookie-jar" cần phải được thay đổi thành "--cookie-jar", phải không? – Sathish