2012-05-10 25 views
14

Tôi muốn sử dụng python để thu thập thông tin từ một số trang web. tôi muốn các khách hàng http để đáp ứng điều kiện này:Bạn có thể giới thiệu một số thư viện máy khách http python không?

  1. hỗ trợ https
  2. sẽ không sử dụng quá nhiều bộ nhớ, không nên tạo ra rất nhiều các quá trình hoặc chủ đề.
  3. có tài liệu rõ ràng và đang tích cực hỗ trợ

Tôi biết rằng requests, tornado, hoặc gevent -httpclient có thể hoàn thành nhiệm vụ của tôi, nhưng tôi không biết đó là tốt nhất? hoặc có một số lựa chọn khác?

hoặc nếu có một số lựa chọn khác được viết bằng C/c++.

Cảm ơn!

Trả lời

22

Sử dụng requests. Nó có cùng một API của các thư viện khác nhau.

+0

Tôi đọc thông tin về cơn lốc xoáy, ai đó nói nó hiệu quả, làm thế nào về hiệu quả về yêu cầu? – Djvu

+0

Tornado hiệu quả nếu bạn có thể thu lợi từ việc xử lý không đồng bộ, tức là nếu bạn cần nhiều kết nối song song. Tuy nhiên, * yêu cầu * cũng hỗ trợ các yêu cầu không đồng bộ: http://docs.python-requests.org/en/latest/user/advanced/#asynchronous-requests - và nó phù hợp hơn vì cơn lốc xoáy là máy chủ web nhiều hơn một máy khách http thư viện. – ThiefMaster

+0

Hãy coi chừng 'yêu cầu' sử dụng' urllib3' tự động lặp lại các yêu cầu trong một số trường hợp nhất định. Nó có thể là quan trọng để tránh lặp đi lặp lại. – temoto

2

Tùy chọn khác là httplib2.

  • đơn giản (và do đó hiệu quả)
  • hỗ trợ tất cả mọi thứ một nhu cầu và Python 3
  • không phải trên Github
  • vài tháng có thể vượt qua trước khi cam kết tiếp theo (một phần vì nó chỉ hoạt động)
+0

Tôi sử dụng httplib2 atm. Nó hỗ trợ py3, nhưng thiếu sự hỗ trợ của proxy trên py3. Tốt đẹp của nó và nó chỉ hoạt động, nhưng có một số vấn đề về theo dõi chính thức đang bị mắc kẹt trong nhiều năm. – sshilovsky

Các vấn đề liên quan