MultiDict
Il peut y avoir plusieurs choix, alors essayez d'utiliser MultiDict de werkzeug:
$ pip install werkzeug
Dans la liste dict:
>>> from werkzeug.datastructures import MultiDict
>>> MultiDict([('a',1), ('a', 2), ('a', 3)])
MultiDict([('a', 1), ('a', 2), ('a', 3)])
ajouter à:
>>> d.update({'a': '4'})
>>> d
MultiDict([('a', 1), ('a', 2), ('a', 3), ('a', '4')])
mise à jour
>>> d['a']=5
>>> d
MultiDict([('a', 5)])
Obtenez le formulaire HTML avec BeautifulSoup select ():
def form_data(self, form_node):
''' form_node :Choisissez parmi HTML()Nœud de formulaire
'''
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
requests est censé prendre en charge MultiDict, mais cela ne fonctionne pas dans mon environnement. .. ..
Cela ne peut pas être aidé, alors je l'ai converti en dict pour le moment:
>>> 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