我正在尝试使用mechanize for python来提交表单但是我需要填写的表单控件没有分配给它的名称.
<POST https://sample.com/anExample multipart/form-data
<HiddenControl(post_authenticity_token=) (readonly)>
<HiddenControl(iframe_callback=) (readonly)>
<TextareaControl(<None>=)>>
Run Code Online (Sandbox Code Playgroud)
我正在尝试编辑的控件是上面对象中的最后一个控件<TextareaControl(<None>=)>.
我查看了文档,似乎找不到为该控件赋值的方法,因为它没有与之关联的名称.
forms = [f for f in br.forms()]
print forms[2].controls[5].name
Run Code Online (Sandbox Code Playgroud)
输出"无"
所以,我会赐予你的,这个很难搞清楚.不得不从字面上看一下mechanize代码本身来弄清楚.不幸的是,我无法在没有name属性的实际表单项上测试它,但是如果你提供你想要提取的网站,我可以这样做,或者你可以自己做.
诚实地,表单对象的可用性没有得到很好的实现.我可以看到编辑无名表单控件值的唯一方法是使用表单的set_value方法:
class HTMLForm:
# <...>
set_value(value,
name=None, type=None, kind=None, id=None, nr=None,
by_label=False, # by_label is deprecated
label=None)
Run Code Online (Sandbox Code Playgroud)
那么,你在这里设置你正在寻找的控件是使用nr参数来获取它,使用表单中控件的索引.不幸的是,你不能使用负整数从后面抓取控件,所以要抓住最后一个表格你必须做的事情nr=len(myform.controls)-1.
在任何情况下,你可以在这里做的是使用该set_value方法,你应该设置,如下:
forms[2].set_value("LOOK!!!! I SET THE VALUE OF THIS UNNAMED CONTROL!",
nr=5)
Run Code Online (Sandbox Code Playgroud)
这应该对你有用.让我知道事情的后续.
| 归档时间: |
|
| 查看次数: |
2972 次 |
| 最近记录: |