Tôi đang tìm nạp một số trang trên Web bằng cách sử dụng số LWP::UserAgent
của Perl và muốn được lịch sự nhất có thể. Theo mặc định, LWP::UserAgent
không liên tục xử lý nội dung nén qua gzip. Có một cách dễ dàng để làm cho nó làm như vậy, để tiết kiệm cho tất cả mọi người một số băng thông?Làm cách nào để chấp nhận nội dung được nén bằng gzip bằng LWP :: UserAgent?
Trả lời
LWP có khả năng này được tích hợp sẵn, nhờ HTTP::Message
. Nhưng đó là một chút ẩn.
Trước tiên, hãy đảm bảo bạn đã cài đặt Compress::Zlib
để có thể xử lý gzip
. HTTP::Message::decodable()
sẽ xuất ra danh sách các mã hóa được cho phép dựa trên các mô-đun bạn đã cài đặt; trong ngữ cảnh vô hướng, đầu ra này có dạng một chuỗi được phân tách bằng dấu phẩy mà bạn có thể sử dụng với tiêu đề HTTP 'Accept-Encoding
', mà LWP
yêu cầu bạn thêm vào số HTTP::Request
-mình. (Trên hệ thống của tôi, với Compress::Zlib
cài đặt, danh sách là "gzip
, x-gzip
, deflate
".)
Khi HTTP::Response
của bạn trở lại, hãy chắc chắn để truy cập nội dung với $response->decoded_content
thay vì $response->content
.
Trong LWP::UserAgent
, tất cả đến với nhau như thế này:
my $ua = LWP::UserAgent->new;
my $can_accept = HTTP::Message::decodable;
my $response = $ua->get('http://stackoverflow.com/feeds',
'Accept-Encoding' => $can_accept,
);
print $response->decoded_content;
này cũng sẽ giải mã văn bản thành các chuỗi unicode Perl. Nếu bạn chỉ muốn LWP
giải nén các phản ứng, và không gây rối với các văn bản, làm như vậy:
print $response->decoded_content(charset => 'none');
- 1. Cách gửi yêu cầu HTTP POST bằng nội dung gzip?
- 2. Làm cách nào để gzip nén một chuỗi bằng Python?
- 3. LWP :: UserAgent HTTP Basic Authentication
- 4. Tại sao Safari không chấp nhận nén GZIP?
- 5. Làm cách nào để gửi dữ liệu POST bằng LWP?
- 6. Cách đăng nội dung bằng Yêu cầu HTTP (Perl)
- 7. Tôi có thể buộc LWP :: UserAgent chấp nhận chứng chỉ SSL hết hạn không?
- 8. Cách đặt User-Agent bằng LWP?
- 9. cách nhận được tiêu đề "gzip xóa mã hóa nội dung" được Chrome gửi?
- 10. Cách đặt Content-Encoding bằng gzip
- 11. Caching và nén gzip bằng htaccess
- 12. C# Làm thế nào để nén nội dung .ashx?
- 13. Làm cách nào để nén nội dung của thư mục bằng python (phiên bản 2.5)?
- 14. Làm cách nào để gzip nén một chuỗi trong Perl
- 15. Làm cách nào để xem nội dung tệp nén
- 16. Làm cách nào để bật một web-API .Net để chấp nhận các bài đăng được mã hóa bằng gáy
- 17. Nội dung tĩnh không được nén vào IE9 từ IIS7
- 18. Làm cách nào để trích xuất hoặc giải nén tệp gzip bằng php?
- 19. Làm cách nào để nén nhiều tệp trong một tệp GZip bằng lớp GZipStream?
- 20. Làm cách nào để ghi đè nội dung tệp bằng nội dung mới trong PHP?
- 21. Nội dung tĩnh gzip nhanh
- 22. Nén GZip trong IIS7 không hoạt động, nhưng tiêu đề mã hóa nội dung được đặt thành gzip
- 23. Android HttpURLConnection: nén gzip
- 24. Xuất sang CSV và Nén bằng GZIP trong postgres
- 25. Cách thực hiện yêu cầu HTTP PUT bằng LWP?
- 26. độ dài nội dung khi sử dụng nén http
- 27. Tôi làm cách nào để sử dụng gói "nén/gzip" của golang để gzip một tệp?
- 28. Chấp nhận cookie bằng Python
- 29. Làm cách nào để hiển thị nội dung html bằng jinja bằng bình?
- 30. Làm cách nào để có được tính năng nén gzip trong IIS7?
Lưu ý: Đây làm việc với LWP 5,814 (từ ngày 08) hoặc mới hơn. –
Từ thử nghiệm của tôi với LWP 6.03 tất cả những gì được yêu cầu là sử dụng 'decoded_content' thay vì' nội dung'. – Cas