0

Python で Mechanize を使用してログインが必要なプロジェクトに取り組んでいます。

名前でフォームのログインにアクセスできません。私は HTML にあまり詳しくありませんが、ログイン入力フィールドを参照しているラベルと関係があるようです。

Mechanize に慣れていない人は、ほとんど無視できます。br.form['xzy'] = '123'現在選択されているフォームに関係なく、「xyz」という名前のフィールドが「123」に設定されることを知っておいてください。要するに、問題はユーザー名入力フィールドの正しい名前または回避策のいずれかを見つけることです。

これは、Pythonの機械化コードがどのように見えるかです...

br.select_form(nr=0)
br.form['username'] = 'dave'
br.form['password'] = 'cats123'
session = br.submit()

これは、私が取り組んでいるページの HTML で入力がどのように見えるかです...

<label for="username" class="fl-label"><span class="accesskey">A</span>ccount:</label>
<input id="username" name="username" class="required" tabindex="1" accesskey="n" type="text" value="" size="32" autocomplete="false"/>

そして、ここに私が遭遇しているエラーがあります...

File "vcl.py", line 12, in maristLogin
    br.form['username'] = 'steh'
mechanize._form.ControlNotFoundError: no control matching name 'username'
4

1 に答える 1

0

ページに他のフォームがありますか、それともページ全体がそのペーストビンにありますか? 次のコードをいつでも実行して、目的のフォームが得られていることを確認できます。

for form in br.forms():
        if form.attrs['id'] == 'fm1':
            br.form = form
于 2013-11-05T03:12:47.707 に答える