Python 试图将mechanize'子类化;s浏览器并创建登录方法
所以这样我只需要打字Python 试图将mechanize'子类化;s浏览器并创建登录方法,python,oop,mechanize,Python,Oop,Mechanize,所以这样我只需要打字 browser = MyBrowser() browser.login() 让我的python脚本将来登录。以下是我目前掌握的情况: import mechanize class MyBrowser(mechanize.Browser, object): _username = 'username' _password = 'password' def __init__(self): super(MyBrowser, self).
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_表单作为这样一个方法的一部分时行为不一样?
self
是MyBrowser类的一个对象。
您对self['name']
和self['pass']
所做的是尝试将值分配给self
对象本身
我假设您希望在类中声明变量,为此,您必须编辑代码以:
self.name = self._username
self.pass = self._password
编辑:
试试这个:
super(MyBrowser, self).name = self._username
super(MyBrowser, self).password = self._password
self
是MyBrowser类的对象。
您对self['name']
和self['pass']
所做的是尝试将值分配给self
对象本身
我假设您希望在类中声明变量,为此,您必须编辑代码以:
self.name = self._username
self.pass = self._password
编辑:
试试这个:
super(MyBrowser, self).name = self._username
super(MyBrowser, self).password = self._password
我明白了
self.select_form(nr=0)
self.form['name'] = self._username
self.form['pass'] = self._password
self.submit()
非常感谢Lior,我真的很感谢你花时间在这件事上,如果没有你的帮助,我不可能得到它:)我得到了
self.select_form(nr=0)
self.form['name'] = self._username
self.form['pass'] = self._password
self.submit()
非常感谢Lior,我真的很感谢你花时间在这件事上,没有你的帮助我是不可能做到的:)非常感谢你的回答!不幸的是,这不起作用。我试图做的是让它在我使用
self将表单分配给self
对象之后,将这些值分配给表单,该表单应该是self对象的一部分。根据这里找到的模型选择表单(nr=0)
I:阅读该线程了解更多信息:谢谢!我刚刚意识到是什么导致了您原始答案的错误:self.pass=self.\u password
pass是一个保留字,它不允许我将其用作字段名,但这就是表单中的内容!:(我正在寻找避开保留字的方法……嗯,感谢您的回答!不幸的是,这不起作用。我试图做的是,在我使用self将表单分配给它之后,让它将这些值分配给应该是self
对象一部分的表单。选择表单(nr=0)
我基于这里找到的模型:阅读该线程了解更多信息:谢谢!我刚刚意识到是什么导致了您原始答案的错误:self.pass=self.\u password
pass是一个保留字,它不允许我将其用作字段名,但这就是表单中的内容!:(我在寻找逃避保留语的方法……嗯