MultiDict
Es gibt mehrere Möglichkeiten. Versuchen Sie also, MultiDict von werkzeug zu verwenden:
$ pip install werkzeug
Aus der Liste diktieren:
>>> from werkzeug.datastructures import MultiDict
>>> MultiDict([('a',1), ('a', 2), ('a', 3)])
MultiDict([('a', 1), ('a', 2), ('a', 3)])
hinzufügen:
>>> d.update({'a': '4'})
>>> d
MultiDict([('a', 1), ('a', 2), ('a', 3), ('a', '4')])
aktualisieren
>>> d['a']=5
>>> d
MultiDict([('a', 5)])
Holen Sie sich mit BeautifulSoup select () ein Formular aus HTML:
def form_data(self, form_node):
''' form_node :Wählen Sie aus HTML()Formularknoten
'''
data = MultiDict(list(
(t['name'], t.get('value', ''))
for i in ['text', 'hidden', 'password', ]
for t in form_node.select('input[type=%s]' % i)
) + list(
(t['name'], t.text)
for t in form_node.select('textarea')
) + list(
(t['name'], t.get('value', ''))
for t in form_node.select('input[checked]' % i)
) + list(
(s.parent['name'], s.get('value', s.text))
for s in form_node.select('option[selected]')
))
# TODO: "file", "image",
# TODO: HTML5 -- input(list) and datalist
return data
Anfragen soll MultiDict unterstützen, funktioniert aber in meiner Umgebung nicht. .. ..
Es kann nicht geholfen werden, deshalb habe ich es vorerst in ein Diktat umgewandelt:
>>> dict(d.lists())
{'a': [1, 2, 3, '4']}
def post(self, uri, data):
if isinstance(data, MultiDict):
data = dict(data.lists())
self.res = self.req.post(
uri, data=data,
verify=False, allow_redirects=False)
self.last_uri = uri
Recommended Posts