मैं एचआरएलपीर्स का उपयोग कर उन पृष्ठों को पार्स करने के लिए उपयोग कर रहा हूं जो मैं urllib के साथ खींचता हूं, और पर कुछ पास करते समय UnicodeDecodeError
अपवादों में आ रहा हूं।पायथन एचटीएमएल पार्सर: यूनिकोडडेकोड एरर
मैं एन्कोडिंग पता लगाने के लिए और ascii
, या utf-8
कन्वर्ट करने के लिए (docs कहने के लिए यह क्या किया जाना चाहिए नहीं है) chardet
उपयोग करने की कोशिश। हानि स्वीकार्य है, लेकिन जब डीकोड/एन्कोड लाइनें ठीक काम करती हैं, तो मुझे हमेशा self.feed() के बाद त्रुटि मिलती है।
जानकारी है अगर मैं सिर्फ print
इसे बाहर कर रहा हूं।
Traceback (most recent call last):
File "test.py", line 27, in <module>
results = search_youtube(searches)
File "test.py", line 23, in __init__
self.feed(page)
File "/usr/lib/python2.6/HTMLParser.py", line 108, in feed
self.goahead(0)
File "/usr/lib/python2.6/HTMLParser.py", line 148, in goahead
k = self.parse_starttag(i)
File "/usr/lib/python2.6/HTMLParser.py", line 252, in parse_starttag
attrvalue = self.unescape(attrvalue)
File "/usr/lib/python2.6/HTMLParser.py", line 390, in unescape
return re.sub(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));", replaceEntities, s)
File "/usr/lib/python2.6/re.py", line 151, in sub
return _compile(pattern, 0).sub(repl, string, count)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
मेरे द्वारा पोस्ट किए गए कोड में नमूना यूआरएल शामिल है। chardet का कहना है कि नमूना यूआरएल utf-8 है, लेकिन प्रोग्राम का उपयोग करते समय, अन्य एन्कोडिंग का सामना करना पड़ता है (वे सभी एक ही यूनिकोड त्रुटि देते हैं)। मैं इसे पढ़ सकता हूं और जब यह मेरे कंसोल पर प्रिंट करता है तो यह समझ में आता है। उबंटू 10.10 मेरा ओएस है। मेरे पास डीकोड/एन्कोड के लिए कोई तर्क नहीं है। मैं इसे समझने के लिए संघर्ष कर रहा हूं, और Google के माध्यम से कई विवादित सुझाव प्राप्त हुए हैं, उनमें से एक शब्दशः (मुझे कहां से याद नहीं है)। आपकी मदद के लिए धन्यवाद। अनुलेख 'Page.decode ('utf-8'); self.feed (पेज) 'एक ही त्रुटि देता है। –
बस स्पष्ट करने के लिए, आपने 'पृष्ठ = पृष्ठ.decode (' utf-8 ') की कोशिश की है; self.feed (पेज) '? – William
हाँ मेरे पास है, यह मुझे एक ही त्रुटि देता है: 'यूनिकोड डीकोड त्रुटि:' ascii 'कोडेक स्थिति 16688 में बाइट 0xc3 को डीकोड नहीं कर सकता है: रिकॉर्ड के लिए क्रमशः श्रेणी में नहीं (128) ' –