Existe-t-il un moyen de remplir une zone de texte faisant partie d'un formulaire en utilisant un module de mécanisation pour Python?Remplissage de la zone de texte avec le module Python mechanize
4
A
Répondre
5
Le forms
reference contient quelques exemples de remplissage de contrôles de texte dans les objets response
.
Une citation pertinente:
# The kind argument can also take values "multilist", "singlelist", "text",
# "clickable" and "file":
# find first control that will accept text, and scribble in it
form.set_value("rhubarb rhubarb", kind="text", nr=0)
L'argument kind
peut être utilisé avec les méthodes form.find_control()
et form.set_value()
pour localiser "text"
contrôles.
Creuser un peu dans le mechanize _form.py
source, Nous avons une explication. Mécaniser TextControl
couvre (entre autres) l'élément de formulaire TEXTAREA
.
#---------------------------------------------------
class TextControl(ScalarControl):
"""Textual input control.
Covers:
INPUT/TEXT
INPUT/PASSWORD
INPUT/HIDDEN
TEXTAREA
"""
def __init__(self, type, name, attrs, index=None):
ScalarControl.__init__(self, type, name, attrs, index)
if self.type == "hidden": self.readonly = True
if self._value is None:
self._value = ""
def is_of_kind(self, kind): return kind == "text"
6
Vous pouvez faire quelque chose comme
import mechanize
br = mechanize.Browser()
br.open("http://pypi.python.org/pypi")
br.select_form("searchform")
br['term'] = "Mechanize"
response = br.submit()
Le br['term'] = "Mechanize"
est la ligne concernée.
Et vous avez sérieusement besoin d'accepter des réponses à vos questions.
1
vous pouvez vérifier la forme de premier élément et combien de formes dans la page peut être fait avec
for form in br.forms():
print form