2011-12-30 84 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值或類似的東西。