2010-07-22 20 views
47

कोई व्यक्ति प्रेजिस्प्लिब का उपयोग कब करेगा और जब urllib?पाइथन urllib बनाम httplib?

अंतर क्या हैं?

मुझे लगता है कि मैं तैयार हूं urllib fansplib का उपयोग करता हूं, मैं एक ऐप बनाने की योजना बना रहा हूं जिसे http अनुरोध करने की आवश्यकता होगी और अब तक मैंने केवल अनुरोध के लिए पायथन में httplib.HTTPConnection का उपयोग किया है, और urllib के बारे में पढ़ना मुझे लगता है कि मैं इसका उपयोग कर सकता हूं अनुरोध के लिए भी, तो एक या दूसरे के लाभ क्या हैं?

+0

याद रखें कि पायथन 3.x 'urllib' और 'urllib2' में ** एक एकीकृत मॉड्यूल' urllib' में ** एकीकृत ** किया गया है। तो 2.x 'urllib' और 3.x' urllib' समान मॉड्यूल नहीं हैं। – treecoder

+2

उन प्रश्नों के लिए जो (Google से आ रहे हैं), जानते हैं कि ये सभी उत्तर महान हैं। लेकिन यह भी पता है कि "आपको कौन सी लाइब्रेरी का उपयोग करना चाहिए" का जवाब काफी हद तक निर्भर करता है कि क्या आपके लिए महत्वपूर्ण है: क्या आप एक दोस्ताना एपीआई चाहते हैं या कुछ जो सेटिंग्स को स्वचालित करता है और एक बहुत आसान बनाता है? क्या आप अपनी लाइब्रेरी विकल्प बनाने के लिए स्वतंत्र हैं, या "लाइब्रेरी" में लाइब्रेरी है (यानी, आपको उन उपयोगकर्ताओं का समर्थन करना होगा जिनके पास 'httplib2' इंस्टॉल नहीं हो सकता है) जो आपके लिए महत्वपूर्ण है? कई पुस्तकालयों के लिए एक मामला है क्योंकि अंतर्निहित पायथन मॉड्यूल उन सभी को संतुष्ट नहीं कर सकता है। –

+0

कोशिश करें [अनुरोध] (http://pypi.python.org/pypi/requests), urllib2-docs [यहां] के आधार पर बहुत सरल और शक्तिशाली मॉड्यूल (http://docs.python-requests.org/en/ नवीनतम/index.html)। – Ambyte

उत्तर

42

urllib (विशेष रूप से urllib2) डिफ़ॉल्ट रूप से कई चीजें संभालता है या ऐसा करने के लिए उपयुक्त libs है। उदाहरण के लिए, urllib2 स्वचालित रूप से रीडायरेक्ट का पालन करेगा और आप लॉगिन स्क्रिप्ट को संभालने के लिए कुकीजर का उपयोग कर सकते हैं। यदि आप httplib का उपयोग कर रहे थे तो ये सभी चीजें हैं जिन्हें आपको स्वयं कोड करना होगा।

+2

संक्षेप में, न तो उपयोग करें। Urllib2 का प्रयोग करें? –

+3

किंडा: पी बस urllib2 के बारे में सोचें ... ठीक है, अंत में "2" के साथ "2" के साथ urllib अंत में। – Robus

+0

एक चेतावनी यह है कि आपको यह करना होगा: urllib आयात urlencode से urllib2 urlencode को लागू नहीं करता है। –

6

आप के साथ HTTP/HTTPS केवल निपटने और HTTP विशिष्ट सामान के लिए उपयोग की जरूरत है कर रहे हैं, httplib का उपयोग करें।

अन्य सभी मामलों के लिए, urllib2 का उपयोग करें।

9

urllib/urllib2 प्रेजेंटप्लिब के शीर्ष पर बनाया गया है। यह सीधे प्रेजेंटप्लिब को लिखने की तुलना में अधिक सुविधाएं प्रदान करता है।

हालांकि, httplib आप अंतर्निहित कनेक्शन पर बेहतर नियंत्रण देता है।

5

आप कैशिंग की तरह उच्च स्तरीय सामान की जरूरत है, Keep-Alive, संपीड़न या प्रमाणीकरण, कोशिश httplib2

16

मैं कुछ के बारे में urllib, urllib2, httplib और कहने के लिए करना चाहते हैं।

httplib और httplib2 सीधे संभालती HTTP/HTTPS अनुरोध और प्रतिक्रिया और आप अपने खुद के काम करने के लिए अधिक स्थान देने के:

urllib* और httplib* के बीच मुख्य अलग है।

urllib और urllib2 प्रेजेंटप्लिब पर निर्माण कर रहे हैं, वे अधिक अमूर्त और शक्तिशाली हैं, लेकिन कभी-कभी कुछ HTTP संबंधित संचालनों के बारे में आपकी निर्दिष्ट आवश्यकता को पूरा नहीं करेंगे।

और httplib और के लिए, मैं कहूंगा कि वे HTTP client library दोनों हैं। हालांकि अधिक शक्तिशाली और httplib तुलना में बहुत अधिक विशेषताएं हैं है।

urllib और urllib2, बोली के रूप में this link से:

urllib और urllib2 दोनों अजगर मॉड्यूल है कि URL अनुरोध संबंधित सामान है, लेकिन विभिन्न कार्यक्षमताओं की पेशकश कर रहे हैं। उनके दो सबसे महत्वपूर्ण मतभेद नीचे सूचीबद्ध हैं:

  • urllib2 एक URL अनुरोध के लिए हेडर स्थापित करने के लिए एक अनुरोध वस्तु स्वीकार कर सकते हैं, urllib केवल एक URL स्वीकार करता है। इसका मतलब है कि आप अपने उपयोगकर्ता एजेंट स्ट्रिंग आदि
  • urllib urlencode विधि है जो प्राप्त क्वेरी स्ट्रिंग की पीढ़ी के लिए प्रयोग किया जाता है प्रदान करता है, urllib2 इस तरह के एक समारोह नहीं है छद्मवेष नहीं कर सकते। यह urlib2 के साथ अक्सर urllib का उपयोग क्यों किया जाता है इसका एक कारण है।

मैं अपने निजी ब्लॉग Httplib Httplib2 Urllib Urllib2-what’s the Difference की सिफारिश करेंगे।

आशा है कि यह मदद करता है :-)

1

उन लोगों Py3 अप करने के लिए चीजें आगे बढ़ के लिए (और किसी कारण से या भयानक requests मॉड्यूल का उपयोग करने के लिए नहीं पुनर्संशोधित नहीं किया जा सकता है), इस संस्करणों के बीच एक अच्छा संक्रमण है:

try: 
    import http.client as httplib 
except ImportError: 
    import httplib 

पायथन संस्करण सेट दोनों में काम करता है।

संबंधित मुद्दे