Làm cách nào để đọc tiêu đề phản hồi được trả về từ yêu cầu PyCurl?Cách đọc tiêu đề bằng pycurl
Trả lời
Có một số giải pháp (theo mặc định, chúng được loại bỏ). Dưới đây là ví dụ về sử dụng tùy chọn HEADERFUNCTION cho phép bạn chỉ ra hàm để xử lý chúng.
Các giải pháp khác là các tùy chọn WRITEHEADER (không tương thích với WRITEFUNCTION) hoặc đặt HEADER thành True để chúng được truyền với phần thân.
#!/usr/bin/python
import pycurl
import sys
class Storage:
def __init__(self):
self.contents = ''
self.line = 0
def store(self, buf):
self.line = self.line + 1
self.contents = "%s%i: %s" % (self.contents, self.line, buf)
def __str__(self):
return self.contents
retrieved_body = Storage()
retrieved_headers = Storage()
c = pycurl.Curl()
c.setopt(c.URL, 'http://www.demaziere.fr/eve/')
c.setopt(c.WRITEFUNCTION, retrieved_body.store)
c.setopt(c.HEADERFUNCTION, retrieved_headers.store)
c.perform()
c.close()
print retrieved_headers
print retrieved_body
này có thể hoặc có thể không phải là một thay thế cho bạn:
import urllib
headers = urllib.urlopen('http://www.pythonchallenge.com').headers.headers
Anothr thay thế, sử dụng human_curl: pip human_curl
In [1]: import human_curl as hurl
In [2]: r = hurl.get("http://stackoverflow.com")
In [3]: r.headers
Out[3]:
{'cache-control': 'public, max-age=45',
'content-length': '198515',
'content-type': 'text/html; charset=utf-8',
'date': 'Thu, 01 Sep 2011 11:53:43 GMT',
'expires': 'Thu, 01 Sep 2011 11:54:28 GMT',
'last-modified': 'Thu, 01 Sep 2011 11:53:28 GMT',
'vary': '*'}
khi nhập 'human_curl' Tôi nhận được thông báo lỗi' ImportError: pycurl: libcurl link-tiume ssl baqckend (nss) là khác nhau từ thời gian biên dịch ssl phụ trợ (không/khác) ' –
import pycurl
from StringIO import StringIO
headers = StringIO()
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(c.HEADER, 1)
c.setopt(c.NOBODY, 1) # header only, no body
c.setopt(c.HEADERFUNCTION, headers.write)
c.perform()
print headers.getvalue()
Thêm bất kỳ setopts curl khác khi cần thiết/mong muốn, chẳng hạn như FOLLOWLOCATION.
Điều này có vẻ là câu trả lời duy nhất mà chỉ lấy các tiêu đề. –
- 1. Tiêu đề tùy chỉnh với pycurl
- 2. đọc http post tiêu đề
- 3. curl: đọc tiêu đề từ tệp
- 4. Cách đặt tiêu đề bằng UITabbarsystemitem
- 5. Cách viết hàng tiêu đề bằng csv.DictWriter?
- 6. Cách đọc tiêu đề và id từ đĩa Blu-ray?
- 7. Đọc ELF tiêu đề trong C
- 8. Cách đọc tiêu đề tệp bằng Python tương tự như C?
- 9. Làm cách nào để đọc tiêu đề cửa sổ bằng JNI hoặc JNA?
- 10. Làm cách nào để cài đặt pyCurl?
- 11. Bắt HTML với Pycurl
- 12. cách ghi đè tiêu đề mặc định bằng tiêu đề tùy chỉnh trong android
- 13. Đặt tiêu đề chỉ đọc trong một UITextField
- 14. Tiêu đề HTTP tiêu đề và nnCoection
- 15. cách đặt tiêu đề bằng nút-xà phòng trong node.js
- 16. Đặt tiêu đề trang bằng cách sử dụng PHP
- 17. Thêm tiêu đề tùy chỉnh bằng cách sử dụng HttpWebRequest
- 18. cách liên kết các tệp tiêu đề bằng C++
- 19. Lấy tiêu đề trình duyệt bằng Python
- 20. Cách thêm Tiêu đề và Tiêu đề phụ trong Gridview
- 21. Cách thay đổi tiêu đề của tiêu đề của QTableView
- 22. csv phân tích cú pháp đọc tiêu đề
- 23. Đọc trong các tệp có hai hàng tiêu đề
- 24. Đọc tiêu đề tùy chỉnh yêu cầu HTTP
- 25. Xác minh tiêu đề trang bằng rspec
- 26. Lỗi khi cài đặt PyCurl
- 27. S3 Tải lên với các ngắt pycurl
- 28. Làm cách nào để đọc tiêu đề PE của mô-đun được tải trong bộ nhớ?
- 29. Cách đọc tiêu đề thư WCF trong gọi lại hai mặt?
- 30. Cách đặt tiêu đề QMainWindow
Tôi muốn sử dụng tính năng này mà không phải truy xuất nội dung. Có cách nào để đạt được điều này? Nội dung của tôi lớn (1.4GB hoặc tương tự) và tôi chỉ cần biết kích thước chứ không phải nội dung. – Alfe
@Alfe cố gắng thực hiện yêu cầu '' 'HEAD''' thay cho' '' GET''', một cái gì đó như '' 'c.setopt (pycurl.CUSTOMREQUEST," HEAD ")' '' – Serge
Chà, đó là muộn theo dõi, nhưng cảm ơn bạn anyway. Nhưng bây giờ cách đây rất lâu… Có thể là tôi đã làm theo cách đó, nhưng thực sự, tôi không thể nhớ: -} – Alfe