Tôi đã xem tài liệu yêu cầu, nhưng dường như tôi không thể tìm thấy bất kỳ thứ gì. Làm thế nào để tôi chỉ yêu cầu tiêu đề, vì vậy tôi có thể đánh giá các tập tin?Nhận kích thước tệp bằng cách sử dụng yêu cầu python, trong khi chỉ nhận được tiêu đề
29
A
Trả lời
54
Gửi một HEAD request:
>>> import requests
>>> response = requests.head('http://example.com')
>>> response.headers
{'connection': 'close',
'content-encoding': 'gzip',
'content-length': '606',
'content-type': 'text/html; charset=UTF-8',
'date': 'Fri, 11 Jan 2013 02:32:34 GMT',
'last-modified': 'Fri, 04 Jan 2013 01:17:22 GMT',
'server': 'Apache/2.2.3 (CentOS)',
'vary': 'Accept-Encoding'}
Một Yêu cầu HEAD
giống như một yêu cầu GET mà chỉ tải các tiêu đề. Lưu ý rằng nó tùy thuộc vào máy chủ để thực sự tôn trọng yêu cầu HEAD của bạn. Một số máy chủ sẽ chỉ phản hồi các yêu cầu GET, vì vậy bạn sẽ phải gửi yêu cầu GET và chỉ đóng kết nối thay vì tải xuống phần thân. Lần khác, máy chủ không bao giờ chỉ định tổng kích thước của tệp.
11
sử dụng requests.get(url, stream=True).headers['Content-length']
stream=True
có nghĩa là khi trở về chức năng, chỉ tiêu đề phản ứng sẽ được tải về, cơ thể phản ứng không phải là.
Cả requests.get
và request.head
có thể giúp bạn tiêu đề nhưng có một lợi thế của việc sử dụng get
get
là linh hoạt hơn, nếu bạn muốn tải về cơ thể phản ứng sau khi kiểm tra độ dài, bạn có thể bắt đầu bằng cách đơn giản là truy cậpcontent
thuộc tính hoặc sử dụng sốiterator
sẽ tải xuống nội dung theo các khối- "yêu cầu HEAD NÊN trùng với thông tin được gửi để phản hồi yêu cầu GET". nhưng không phải lúc nào cũng vậy.
đây là một ví dụ về việc chiều dài của một MIT open course video
MitOpenCourseUrl = "http://www.archive.org/download/MIT6.006F11/MIT6_006F11_lec01_300k.mp4"
resHead = requests.head(MitOpenCourseUrl)
resGet = requests.get(MitOpenCourseUrl,stream=True)
resHead.headers['Content-length'] # output 169
resGet.headers['Content-length'] # output 121291539
Các vấn đề liên quan
- 1. Nhận kích thước tệp bằng Python?
- 2. Nhận kích thước yêu cầu POST bằng PHP
- 3. Nhận địa chỉ IP từ yêu cầu HTTP POST bằng cách sử dụng Python
- 4. laravel 4: tại sao Yêu cầu :: header() không nhận được tiêu đề được chỉ định?
- 5. quy tắc .htaccess để nhận kích thước tệp được yêu cầu
- 6. Ajax - Nhận kích thước tệp trước khi tải xuống
- 7. kích thước Nhận các tập tin yêu cầu qua ajax
- 8. Cách nhận dữ liệu nhận được trong yêu cầu Flask
- 9. JS/jQuery nhận tiêu đề yêu cầu HTTPRequest?
- 10. Nhận tiêu đề phản hồi từ yêu cầu HTTP Ruby
- 11. Nhận kích thước không nén của tệp .gz trong python
- 12. Cách nhận Yêu cầu ký chứng chỉ
- 13. Nhận kích thước tệp lớn trong C
- 14. Chỉ chấp nhận yêu cầu nhận/gửi từ localhost
- 15. C/C++ nhận được kích thước struct
- 16. nhận kích thước tệp trong javascript
- 17. Làm cách nào để nhận được kích thước tệp bằng megabyte bằng Perl?
- 18. Cách nhận yêu cầu ajax bằng django?
- 19. Nhận kích thước tệp/thư mục bằng cách sử dụng Java 7 new IO
- 20. Xác nhận kích thước tải lên tệp
- 21. Python ftplib không thể nhận được kích thước của tập tin trước khi tải về?
- 22. Parametrized nhận được yêu cầu trong Ruby?
- 23. Tôi nhận được lỗi Yêu cầu Lỗi 400 trong khi sử dụng django-piston
- 24. MPI_Recv: Nhận kích thước khác với kích thước được gửi
- 25. Cách đặt chuỗi tiêu đề yêu cầu
- 26. Đăng JSON bằng cách sử dụng các yêu cầu Python
- 27. yêu cầu python: để nhận thông số
- 28. PHP: Nhận nội dung yêu cầu nhận được
- 29. Không thể nhận Mã thông báo yêu cầu OAuth khi làm việc với API Tumblr bằng cách sử dụng Python
- 30. Tiêu đề phạm vi Http yêu cầu toàn bộ tệp
Lưu ý rằng không phải mọi phản ứng nhất thiết sẽ bao gồm một 'nội dung length' - đôi khi phản ứng được tạo ra sử dụng 'Transfer-Encoding: chunked', trong trường hợp đó không có cách nào để biết phản ứng sẽ kéo dài bao lâu, trừ khi bạn thực sự nhận được toàn bộ phản hồi. –
điều này là khác nhau sau đó kích thước lấy bằng cách sử dụng 'urllib.urlopen (url) .info() ['content-length']', vì vậy không chính xác những gì tôi muốn. –