2011-04-28 10 views
16

असल में, मैं अजगर में urllib2 का उपयोग कर एक यूआरएल डाउनलोड करने की कोशिश कर रहा हूं।ValueError: urllib2 में अज्ञात यूआरएल प्रकार, हालांकि ब्राउज़र में खोला गया यूआरएल ठीक है

import urllib2 
req = urllib2.Request('www.tattoo-cover.co.uk') 
req.add_header('User-agent','Mozilla/5.0') 
result = urllib2.urlopen(req) 

यह ValueError आउटपुट और कार्यक्रम उदाहरण में URL के लिए कुचल:

कोड निम्नलिखित है। जब मैं ब्राउज़र में यूआरएल तक पहुंचता हूं, तो यह ठीक काम करता है।

कोई विचार समस्या को कैसे संभालना है?

अद्यतन: बेन जेम्स और sth के लिए

धन्यवाद समस्या का पता चला है => जोड़ें 'http: //'

अब सवाल परिष्कृत है: यह संभव ऐसे मामलों स्वचालित रूप से संभाल करने के लिए है कुछ बिल्टिन फ़ंक्शन के साथ या मुझे बाद में स्ट्रिंग कॉन्सटेनेशन के साथ त्रुटि प्रबंधन करना है?

उत्तर

26

जब आप प्रोटोकॉल के बिना किसी ब्राउज़र में URL दर्ज करते हैं, तो यह HTTP पर डिफ़ॉल्ट होता है। urllib2 आपके लिए यह धारणा नहीं बनाएगा; आपको http:// के साथ इसे उपसर्ग करने की आवश्यकता है।

5

आपको प्रोटोकॉल समेत एक संपूर्ण यूआरएल का उपयोग करना होगा, न केवल होस्ट नाम निर्दिष्ट करें।

सही यूआरएल http://www.tattoo-cover.co.uk/ होगा।

+1

sth, हाँ, अच्छा अवलोकन! तो अनुवर्ती प्रश्न: क्या कुछ अंतर्निहित फ़ंक्शन के साथ urllib2 द्वारा खराब यूआरएल को स्वीकार्य करना संभव है या मुझे स्ट्रिंग मैनिपुलेशन के साथ त्रुटि प्रबंधन करना है ('http: //' + string + '/' को जोड़कर) – Nik

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