2011-12-30 112 views
0

我想用Python登录到https://www.surveymonkey.com/MyAccount_Login.aspx,并且我收到一个错误。这是我使用的登录代码:用Python登录到asp网站

import urllib, urllib2, cookielib 
username = '<my user name>' 
password = '<my password>' 
cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
login_data=urllib.urlencode({'wc_Login1$txtUsername':username, 'wc_Login1$txtPassword':password}) 
opener.open('https://www.surveymonkey.com/MyAccount_Login.aspx', login_data) 

在这一点上,我发现了以下回:

<addinfourl at 43343112L whose fp = <socket._fileobject object at 0x00000000028A4ED0>> 

我相信我正确识别的用户名和密码字段为wc_Login1 $ txtUsername和wc_Login1 $ txtPassword使用Opera的Dragonfly。

如果我添加下面看看我是否已经正确登录:

resp=opener.open('http://www.surveymonkey.com/MySurveys.aspx') 
print resp.read() 

看来,我仍然停留在登录页面。

<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>SurveyMonkey - Log in</title> 

有什么想法?我已经读过,登录到asp页面是一个使用python的痛苦,但这一点有点直观。

回答

2

那么,这是接近一年后,并没有真正解决您的问题。对我来说,你的代码工作正常,但不会登录到网站。我找到了解决日志问题的解决方法。我没有尝试登录,而是从浏览器中偷取了cookie并手动设置。

import urllib, urllib2, cookielib 

#Cookie specific information 
session = 'cookie_value' 
log = cookielib.Cookie(0, 'cookie_name', session, None, False, 
         'domain_name', False, False, 
         'path_name', True, False, None, True, None, None, 
         {'HttpOnly': None}, False) 

cj = cookielib.CookieJar() 
cj.set_cookie(log) 

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 

resp = opener.open('website') 
output = open('output.htm', 'w') 
output.write(resp.read()) 
output.close() 

我对此不太了解,但是您可能需要重置每天的cookie值或类似的东西。