2011-06-23 7 views
12

मैं सीखने की कोशिश कर रहा हूं कि urllib2 कैसे काम करता है और यह वास्तविक अनुरोध या प्रतिक्रिया भेजने से पहले अपने विभिन्न घटकों को कैसे समाहित करता है।urllib2.Request (<url>) क्या करता है और मैं इसे कैसे प्रिंट/देख सकता हूं

अब तक मेरे पास है:

theurl = "www.example.com" 

कि स्पष्ट रूप से यूआरएल को देखने के लिए निर्दिष्ट करता है।

req = urllib2.Request(theurl) 

यह नहीं पता कि यह क्या करता है, इसलिए सवाल है।

handle = urllib2.urlopen(req) 

यह एक पृष्ठ प्राप्त करता है और सभी अनुरोध और प्रतिक्रिया आवश्यक है।

तो मेरा सवाल है, urllib2 क्या करता है। वास्तव में वास्तव में क्या करता है?

कोशिश करते हैं और इस पर गौर एक विचार मैंने कोशिश की

print req 

पाने के लिए और सिर्फ

<urllib2.Request instance at 0x123456789> 

मैं भी

print req.read() 

की कोशिश की और मिल गया मिल गया के लिए:

Traceback (most recent call last): 
    File "<stdin>", line 1, in ? 
    File "/usr/lib64/python2.4/urllib2.py, line 207, in `__`getattr`__` 
     raise AttributeError, attr 
AttributeError: read 

तो मैं स्पष्ट रूप से कुछ गलत कर रहा हूँ। यदि कोई भी मेरे दोनों प्रश्नों में से एक में मदद कर सकता है जो बहुत अच्छा होगा।

+2

http://docs.python.org/library/urllib2.html – Blair

+2

@Blair, पिछले मैं जाँच की पायथन के 'urllib2' दस्तावेज़ इतने महान नहीं थे ... माइकल फॉर्ड के पास एक बहुत अच्छी डॉससेट है: http://www.voidspace.org.uk/python/articles/urllib2.shtml –

+0

-3? मैन, वह कठोर है। इसके बजाय कुछ प्रश्नों को अप-वोट करने के बारे में कैसे? – MatthewD

उत्तर

14

वर्ग "अनुरोध" आप के बारे में पूछ रहे हैं: http://docs.python.org/library/urllib2.html#urllib2.Request

वर्ग urllib2.Request (यूआरएल [, डेटा] [, हेडर] [, origin_req_host] [, रूप से संदिग्ध])

यह कक्षा एक यूआरएल अनुरोध का एक अमूर्त है।

समारोह आप वास्तव में एक अनुरोध (जो एक Request वस्तु को स्वीकार करने या एक URL स्ट्रिंग आप provice के चारों ओर एक लपेटो कर सकते हैं) एक अनुरोध वस्तु के निर्माण) बनाना चाहते: http://docs.python.org/library/urllib2.html#urllib2.urlopen

urllib2.urlopen (यूआरएल [, डेटा] [, टाइमआउट]) यूआरएल यूआरएल खोलें, जो या तो स्ट्रिंग या अनुरोध ऑब्जेक्ट हो सकता है।

उदाहरण:

theurl = "www.example.com" 
try: 
    resp = urllib2.urlopen(theurl) 
    print resp.read() 
except IOError as e: 
    print "Error: ", e 

उदाहरण 2 (Request के साथ):

theurl = "www.example.com" 
try: 
    req = urllib2.Request(theurl) 
    print req.get_full_url() 
    print req.get_method() 
    print dir(req) # list lots of other stuff in Request 
    resp = urllib2.urlopen(req) 
    print resp.read() 
except IOError as e: 
    print "Error: ", e 
3

urllib2.Request() फ़ंक्शन कॉल की तरह दिखता है, लेकिन नहीं - यह एक ऑब्जेक्ट कन्स्ट्रक्टर है। यह urllib2 मॉड्यूल से टाइप अनुरोध का ऑब्जेक्ट बनाता है, here दस्तावेज।

इस तरह, यह शायद प्रारंभिक को छोड़कर कुछ भी नहीं करता है। आप स्रोत कोड को देखकर इसे सत्यापित कर सकते हैं, जो आपके पायथन इंस्टॉलेशन की lib निर्देशिका (urllib2.py, कम से कम पायथन 2.x) में होना चाहिए।

+0

उत्तर के लिए धन्यवाद। @ एसएलॉट - मुझे अनुरोध के उद्देश्य में अधिक रुचि थी। हैंडल को पढ़ना श्रृंखला से नीचे है जो मैं देखना चाहता था। @ बलिएर - दिशा के लिए धन्यवाद, मैंने वहां देखा था, लेकिन माइक ने कहा कि अगर यह बहुत खराब है तो इसका विवरण है। @ माइक - लिंक के लिए धन्यवाद, यह समझाया गया है कि मैं बाद में था। यह अब समझ में आता है। अभी भी सुनिश्चित नहीं है कि मैं अनुरोध ऑब्जेक्ट की सामग्री को प्रिंट/देख नहीं सकता हूं। – user788462

+0

सुझाव के लिए धन्यवाद लेकिन एसएलॉट के समान, यह मुझे वह जानकारी प्रदान नहीं करता है जिसे मैं देखना चाहता हूं। प्रिंटिंग "हैंडल" सिर्फ एकत्रित वेब पेज प्रिंट करता है। मैं "req" देखना चाहता हूं और यह urlopen में डालने से पहले, "theurl" और इसे दिए गए किसी भी अन्य इनपुट का उपयोग कैसे करता है। @ सेंटिनल - एक अच्छा दिन हम हैं :)। ऐसा लगता है कि आप मूल शोध की कमी कर रहे हैं। – user788462

+0

ठीक है, मैंने अपना जवाब संपादित कर लिया है। उम्मीद है कि यह और अधिक उपयोगी है। – MatthewD

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

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