2010-01-07 11 views
7

के साथ पायथन में urllib का उपयोग कर फ़ाइल डाउनलोड करें मैं डेटाबेस से HTTP पीडीएफ डाउनलोड करने के लिए पायथन में एक सॉफ्टवेयर प्रोग्रामिंग कर रहा हूं। कभी कभी डाउनलोड इस संदेश के साथ बंद करो:wget -c सुविधा

retrieval incomplete: got only 3617232 out of 10689634 bytes 

मैं कैसे जहां यह 206 Partial Content HTTP सुविधा का उपयोग कर बंद हो जाता है पुनः आरंभ करने के डाउनलोड पूछ सकता हूँ?

मैं इसे wget -c का उपयोग करके कर सकता हूं और यह बहुत अच्छी तरह से काम करता है, लेकिन मैं इसे सीधे अपने पायथन सॉफ्टवेयर में कार्यान्वित करना चाहता हूं।

कोई विचार?

धन्यवाद

उत्तर

7

आप Range हैडर गए एक GET भेजकर एक आंशिक डाउनलोड अनुरोध कर सकते हैं: अपने सीमा के बाद से,

import urllib2 
req = urllib2.Request('http://www.python.org/') 
# 
# Here we request that bytes 18000--19000 be downloaded. 
# The range is inclusive, and starts at 0. 
# 
req.headers['Range'] = 'bytes=%s-%s' % (18000, 19000) 
f = urllib2.urlopen(req) 
# This shows you the *actual* bytes that have been downloaded. 
range=f.headers.get('Content-Range') 
print(range) 
# bytes 18000-18030/18031 
print(repr(f.read())) 
# ' </div>\n</body>\n</html>\n\n\n\n\n\n\n' 

Content-Range जाँच करने के लिए सीखने के लिए क्या बाइट्स वास्तव में डाउनलोड किया गया है सावधान रहें सीमा से बाहर हो सकता है, और/या सभी सर्वर Range शीर्षलेख का सम्मान नहीं कर रहे हैं।

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