2012-08-23 15 views

उत्तर

25

आपको परिणामी फ़ाइल-जैसी ऑब्जेक्ट को एक चर में बाध्य करने की आवश्यकता है, ओ therwise दुभाषिया सिर्फ repr के माध्यम से इसे उदासीनता:

>>> import urllib2 
>>> urllib2.urlopen('http://www.google.com') 
<addinfourl at 18362520 whose fp = <socket._fileobject object at 0x106b250>> 
>>> 
>>> f = urllib2.urlopen('http://www.google.com') 
>>> f 
<addinfourl at 18635448 whose fp = <socket._fileobject object at 0x106b950>> 

वास्तविक डेटा एक read() प्रदर्शन करने के लिए आप की जरूरत प्राप्त करने के लिए।

>>> data = f.read() 
>>> data[:50] 
'<!doctype html><html itemscope="itemscope" itemtyp' 

देखने के लिए हेडर लौटे:

>>> print f.headers 
Date: Thu, 23 Aug 2012 00:46:22 GMT 
Expires: -1 
Cache-Control: private, max-age=0 
... etc ... 
+0

मेरे यहां एक प्रश्न है। यदि मैं 'f' से 'डेटा' की सामग्री संग्रहीत नहीं करता हूं, और बस' f.read()' निष्पादित करता हूं, तो मुझे केवल एक बार सामग्री मिलती है। अगर मैं फिर से 'f.read()' करता हूं, तो यह एक खाली स्ट्रिंग प्रिंट करता है। ऐसा क्यों है? –

+0

@ सिद्धार्थसमेंट: क्योंकि आपने स्ट्रीम से सभी डेटा खपत किया है - यह 'urllib2' द्वारा आंतरिक रूप से संग्रहीत नहीं है। – mhawke

4

urlopen

print feed.read() 
करने के लिए अपने कॉल के बाद निम्नलिखित जोड़े
2

शायद आप requests library अधिक सहज ज्ञान युक्त का उपयोग कर urllib2 से उपयोग करने के लिए मिल जाएगा।

+0

अच्छा कॉल, धन्यवाद! –