2

login.live.comにログインしようとしていますが、Mechanizeはそのページにフォームがあることを認識しません。誰か提案はありますか?

br=mechanize.Browser()
br.open('https://login.live.com/')
br.select_form(nr=0)

これにより、次のようになります。

mechanize._mechanize.FormNotFoundError:nr0に一致するフォームがありません

そのページに明確にフォームがある場合。

4

3 に答える 3

3

代わりに、名前でフォームを取得してみてくださいbr.select_form(name="f1")

(フォーム名はページソースから取得しました。ログインフォームが必要だと思います。)

于 2011-12-15T04:11:26.843 に答える
1

問題は、フォームがHTTPGETリクエストへの応答として配信されるhtmlにないことです。これは、ブラウザで実行されたjavascriptスクリプトの結果として後で作成されます。

動的に生成されたコンテンツを取得する方法の詳細については、この質問への回答をご覧ください。

于 2011-12-15T08:10:36.733 に答える
1
r = br.open('https://login.live.com/')
r.get_data()
# outputs:
# ...
# Windows Live ID requires JavaScript to sign in. This web browser either does not support JavaScript, or scripts are being blocked
# ...

回避策は見つかりませんでした。代わりにSelenium/webdriverを使用することをお勧めします。

于 2012-02-06T15:56:28.393 に答える