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

selfMyBrowserクラスのオブジェクトです。とで行ったことは、オブジェクト自体に値を割り当てようとすることです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
于 2012-12-04T21:31:20.143 に答える