मुझे 'HTTP त्रुटि 500: आंतरिक सर्वर त्रुटि' प्रतिक्रिया प्राप्त होती है, लेकिन मैं अभी भी त्रुटि HTML के अंदर डेटा को पढ़ना चाहता हूं।urllib2.HTTPError या urllib.error.HTTP त्रुटि ओवरराइड और प्रतिक्रिया एचटीएमएल
अजगर 2.6 के साथ, मैं सामान्य रूप से उपयोग कर एक पृष्ठ लाने:
urllib2.HTTPError: HTTP Error 500: Internal Server Error
कैसे मैं ऐसे लाने कर सकते हैं:
import urllib2
url = "http://google.com"
data = urllib2.urlopen(url)
data = data.read()
जब प्रयास कर नाकाम रहने के यूआरएल पर इस का उपयोग करने के, मैं अपवाद urllib2.HTTPError
मिल त्रुटि पृष्ठ (urllib2
के साथ या बिना), जब वे आंतरिक सर्वर त्रुटियों को वापस कर रहे हैं?
ध्यान दें कि पायथन 3 के साथ, संबंधित अपवाद urllib.error.HTTPError
है।
एक बार हमने त्रुटि की है .read(), error.read() बाद में खाली स्ट्रिंग देता है। कभी-कभी यह कहीं और कोड को गड़बड़ कर देता है। हम दूसरों के लिए त्रुटि की सामग्रियों को विनम्रतापूर्वक कैसे रख सकते हैं? –
@ मैट मैंने कभी कोशिश नहीं की है, लेकिन चूंकि यह एक फ़ाइल जैसी वस्तु है, इसलिए आप स्ट्रीम की शुरुआत में "फ़ाइल पॉइंटर" को रीसेट करने के लिए 'error.seek (0)' करने में सक्षम हो सकते हैं। I/O इंटरफ़ेस के यादृच्छिक अभिगम भाग को लागू करने के लिए प्रत्येक फ़ाइल-जैसी ऑब्जेक्ट की आवश्यकता नहीं है, इसलिए यह सुनिश्चित न करें कि यह काम करता है या नहीं। यदि ऐसा नहीं होता है, तो आप इसे अपने प्रश्न में पूछने पर विचार कर सकते हैं ताकि आप एक बड़े दर्शक को टैप कर सकें। –
ध्यान दें कि अपमानजनक मामलों में HTTPError फ़ाइल-जैसी ऑब्जेक्ट के रूप में व्यवहार नहीं कर सकता है। सत्यापित करें कि पढ़ा है() हैशर के साथ उपलब्ध है। – ron