मैं lxml का उपयोग करके एक POST विधि प्रपत्र सबमिट करने का प्रयास कर रहा हूं और मुझे TypeError मिल रहा है। यह एक कम से कम उदाहरण है कि इस त्रुटि को जन्म देती है:lxml में POST विधि प्रपत्र सबमिट_फॉर्म के साथ TypeError
>>> import lxml.html
>>> page = lxml.html.parse("http://www.webcom.com/html/tutor/forms/start.shtml")
>>> form = page.getroot().forms[0]
>>> form.fields['your_name'] = 'Morphit'
>>> result = lxml.html.parse(lxml.html.submit_form(form))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.3/site-packages/lxml/html/__init__.py", line 887, in submit_form
return open_http(form.method, url, values)
File "/usr/lib/python3.3/site-packages/lxml/html/__init__.py", line 907, in open_http_urllib
return urlopen(url, data)
File "/usr/lib/python3.3/urllib/request.py", line 160, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python3.3/urllib/request.py", line 471, in open
req = meth(req)
File "/usr/lib/python3.3/urllib/request.py", line 1183, in do_request_
raise TypeError(msg)
TypeError: POST data should be bytes or an iterable of bytes. It cannot be of type str.
मैं कहीं और ऑनलाइन सटीक त्रुटि पाया है, लेकिन मैं नहीं देखा है इसे इस तरह lxml अंदर से उत्पन्न। क्या किसी को पता है कि यह एक बग है, या अपेक्षित व्यवहार और इसके आसपास कैसे काम करना है?
को मैं क्योंकि यह के आंतरिक प्रबंधन है ही बग .. यह वास्तव में एक बग की तरह लगता है है str/यूनिकोड/बाइट्स। – abourget
संदर्भ के लिए, मॉर्फिट ने [lxml के बग ट्रैकर] (https://bugs.launchpad.net/lxml/+bug/1074996) पर एक बग सबमिट किया, [प्रस्तावित पुल अनुरोध] (https://github.com/lxml/ एलएक्सएमएल/पुल/122) पैच को ठीक करने के लिए, प्रतिक्रिया के आधार पर भी इसे बेहतर बनाया। अफसोस की बात है, पुल अनुरोध अभी भी विलय होने का इंतजार कर रहा है! –
@ मॉर्फिट: आप अपने प्रस्तावित पुल अनुरोध को यहां एक उत्तर के रूप में जोड़ सकते हैं। उस उत्तर को स्वीकार करें, ताकि यह अब अनुत्तरित प्रश्न न हो। – user1251007