2013-08-16 122 views
1

所以这是我第一次编程有史以来我试图自动登录到使用python/mechanize网站。所以这是我的代码:自动登录使用python机械化

import mechanize 
import cookielib 

# Browser 
br = mechanize.Browser() 

# Cookie Jar 
cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 

# Browser options 
br.set_handle_equiv(True) 
br.set_handle_gzip(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 
br.set_handle_robots(False) 

# Follows refresh 0 but not hangs on refresh > 0 
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 

# Want debugging messages? 
br.set_debug_http(True) 
br.set_debug_redirects(True) 
br.set_debug_responses(True) 


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')] 

br.add_password('http://newiso.accellion.net/w', 'USERNAME', 'PASSWORD') 
br.open('http://newiso.accellion.net/w') 


# Show the html title 
print br.title() 

# Show the response headers 
print br.response().info() 

# Show the available forms 
for f in br.forms(): 
    print f 

br.form["g_username"] = "USERNAME" 
br.form["password"] = "PASSWORD" 

import urllib 
opener = urllib.FancyURLopener() 
print opener.open('http://USERNAME:[email protected]/').read() 

,我不断收到此错误:

Traceback (most recent call last): 
File "/Users/dancetrina/Documents/login.py", line 45, in <module> 
br.form["g_username"] = "USERNAME" 
TypeError: 'NoneType' object does not support item assignment 

这是否意味着我不能使用机械化的用户名/密码输入?还是有什么我失踪,会使它工作?提前感谢你!

+0

有一个实际的登录表单,或者是使用HTTP授权头呢? – Blender

+0

@Blender是的,有一个实际的登录表 – bleachtsubasa

回答

1

在过去的(和 :-))for循环,你应该写:

f.form["g_username"] = "USERNAME" 
f.form["password"] = "PASSWORD" 
+0

呃,但现在我得到了这个?回溯(最近呼叫最后): 文件“/Users/dancetrina/Documents/login.py”,行44,在 f .form [“g_username”] =“USERNAME” 文件“build/bdist.macosx-10.6-intel/egg/mechanize/_form.py”,第2682行,在__getattr__中 return getattr(HTMLForm,name) AttributeError:class HTMLForm没有属性'form' – bleachtsubasa