1

这样我所要做的就是输入

browser = MyBrowser()
browser.login()

让我的 python 脚本在未来登录。这是我到目前为止所拥有的:

import mechanize
class MyBrowser(mechanize.Browser, object):
    _username = 'username'
    _password = 'password'

    def __init__(self):
        super(MyBrowser, self).__init__()
        self.set_handle_robots(False)
        self.set_proxies({"http" : "http://proxy.me.com:80"})

    def login(self):
        self.open('http://login.mypage.com/')
        self.select_form(nr=0)
        self['name'] = self._username
        self['pass'] = self._password
        self.submit()

我使用相同的方法制作了一个运行良好的登录功能。但是现在,当我调用 browser.login() 时,我得到了这个:

self['name'] = self._username
TypeError: 'MyBrowser' object does not support item assignment

当它是这样的方法的一部分时,为什么调用 select_form 的行为不一样?

4

2 回答 2

1

我得到了它!!!

self.select_form(nr=0)
self.form['name'] = self._username
self.form['pass'] = self._password
self.submit()

非常感谢 Lior,我真的很感谢你在这方面的时间,如果没有你的帮助,我不可能得到它:)

于 2012-12-05T19:18:46.537 回答
0

self是 MyBrowser 类的一个对象。您对self['name']and所做的self['pass']是尝试将值分配给self对象本身。

我假设您想在类中声明变量,为此您必须将代码编辑为:

self.name = self._username
self.pass = self._password

编辑:试试这个:

super(MyBrowser, self).name = self._username
super(MyBrowser, self).password = self._password
于 2012-12-04T21:31:20.143 回答