使用Mechanize/Python的Hotmail网站登录表单

使用Mechanize/Python的Hotmail网站登录表单,python,forms,urllib2,mechanize,www-mechanize,Python,Forms,Urllib2,Mechanize,Www Mechanize,我正在学习Mechanize/BeautifulSoup,学习方法如下: 我不想为Gmail写登录和检查邮件,我想对hotmail做同样的事情。但是,我无法使用Mechanize找到登录表单。当我尝试执行以下操作时,结果为空: for f in self.br.forms(): print 'form:', f 那些代码什么也打印不出来。通过查看hotmail网站(login.live.com),我可以看到表单名是“F1”,两个字段是“username”和“passwd”,但Mechani

我正在学习Mechanize/BeautifulSoup,学习方法如下:

我不想为Gmail写登录和检查邮件,我想对hotmail做同样的事情。但是,我无法使用Mechanize找到登录表单。当我尝试执行以下操作时,结果为空:

for f in self.br.forms():
  print 'form:', f
那些代码什么也打印不出来。通过查看hotmail网站(login.live.com),我可以看到表单名是“F1”,两个字段是“username”和“passwd”,但Mechanize无法捕获这些字段

以下是完整的代码:

import os
import mechanize
import cookielib
from bs4 import BeautifulSoup
import html2text
import agent

class Hotmail:
    def __init__(self):
        self.br = mechanize.Browser()
        cj = cookielib.LWPCookieJar()     # Cookie Jar
        self.br.set_cookiejar(cj)
        # Browser options
        self.br.set_handle_equiv(True)
        #self.br.set_handle_gzip(True)
        self.br.set_handle_redirect(True)
        self.br.set_handle_referer(True)
        self.br.set_handle_robots(False)

        self.br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)   # Follows refresh 0 but not hangs on refresh > 0
        self.br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]                       # User-Agent

    def login(self, user, pswd):
        self.br.open('http://login.live.com')
        for f in self.br.forms():
            print 'form:', f

if __name__ == '__main__':
    test = Hotmail()
    test.login('asd','asd')
我还尝试手动将表单“F1”设置为br.form并为其填写值,但它不起作用

你知道为什么Mechanize无法识别Hotmail上的任何表单,或者如何获取这些表单吗


非常感谢你

我认为返回的HTML中不存在该表单。它是用JavaScript构建的。有没有可能触发JavaScript并让表单填充?