有没有办法用Python的机械化模块填写表单的一部分textarea?
答案 0 :(得分:6)
您可以执行类似
的操作import mechanize
br = mechanize.Browser()
br.open("http://pypi.python.org/pypi")
br.select_form("searchform")
br['term'] = "Mechanize"
response = br.submit()
br['term'] = "Mechanize"
是相关的一行。
你真的需要接受一些问题的答案。
答案 1 :(得分:5)
forms
reference有一些填充response
个对象中文本控件的示例。
相关引用:
# 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)
kind
参数可与form.find_control()
和form.set_value()
方法一起使用,以找到"text"
控件。
稍微深入mechanize _form.py
source,我们有一个解释。 Mechanize TextControl
涵盖(以及其他)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"
答案 2 :(得分:1)
您可以先检查元素表单,然后使用
完成页面中的表单数量for form in br.forms():
print form