[PYTHON] MultiDict: Wenn Sie Form POST mit Crawler usw. ausführen.

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 Formulardaten mit Beautiful Soup

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

Beim POSTEN mit Anforderungen wird nur der erste Parameter übergeben

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

MultiDict: Wenn Sie Form POST mit Crawler usw. ausführen.
Eine Problemumgehung bei der Installation von pyAudio mit pip.
Fehler beim Installieren eines Moduls mit Python pip
Persönliche Tipps, wenn Sie verschiedene Dinge mit Python 3 tun
Ich erhalte einen UnicodeDecodeError, wenn ich mit mod_wsgi laufe
Ein Memo beim Erstellen einer Python-Umgebung mit Miniconda