Sto provando a inviare un modulo di metodo POST utilizzando lxml e sto ricevendo un errore TypeError. Questo è un esempio minimo che solleva questo errore:Il modulo POST in lxml genera TypeError con submit_form
>>> 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.
ho trovato l'errore esatto un altro sito, ma io non l'ho visto generata dall'interno lxml come questo. Qualcuno sa se questo è un bug, o un comportamento atteso e come aggirarlo?
Ho lo stesso problema .. è davvero sembra come un insetto, perché è la gestione interna di str/unicode/byte. – abourget
Per riferimento, Morphit ha inviato un bug a [lxml's bug tracker] (https://bugs.launchpad.net/lxml/+bug/1074996), [ha proposto una richiesta di pull] (https://github.com/lxml/ lxml/pull/122) per correggere la patch, anche migliorata in base al feedback. Purtroppo, la richiesta pull è ancora in attesa di essere unita! –
@Morphit: è possibile aggiungere la richiesta di pull proposta come risposta qui. Accetta questa risposta, in modo che questa non sia più una domanda senza risposta. I valori di campo – user1251007