2013-03-25 70 views
2

我有以下代码:登录到HTTPS站点使用python机械化库

import requests 
import sys 
import urllib2 
import re 
import mechanize 
import cookielib 
#import json 
#import imp 
#print(imp.find_module("requests")) 
#print(requests.__file__) 
EMAIL = "******" 
PASSWORD = "*******" 

URL = 'https://www.imleagues.com/Login.aspx' 
address = "http://www.imleagues.com/School/Team/Home.aspx?Team=27d6c31187314397b00293fb0cfbc79a" 
br = mechanize.Browser() 
cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 

br.add_password(URL, EMAIL, PASSWORD) 
br.open(URL) 

#br.open(URL) 
#br.select_form(name="aspnetForm") 
#br.form["ctl00$ContentPlaceHolder1$inUserName"] = EMAIL 
#br.form["ctl00$ContentPlaceHolder1$inPassword"] = PASSWORD 
#response = br.submit() 
#br= mechanize.Browser() 
site = br.open(address) 

    # Start a session so we can have persistant cookies 
#session = requests.Session() 

    # This is the form data that the page sends when logging in 
#login_data = { 
# 'ctl00$ContentPlaceHolder1$inUserName': EMAIL, 
# 'ctl00$ContentPlaceHolder1$inPassword': PASSWORD, 
    # 'aspnetFrom': 'http://www.imleagues.com/Members/Home.aspx', 
#} 
#URL_post = 'http://www.imleagues.com/Members/Home.aspx' 
    # Authenticate 
#r = session.post(URL, data=login_data) 

    # Try accessing a page that requires you to be logged in 
#r = session.get('http://www.imleagues.com/School/Team/Home.aspx?Team=27d6c31187314397b00293fb0cfbc79a') 



website = site.read() 


f = open('crypt.txt', 'wb') 
f.write(website) 

#print(website_html) 

我试图登录到这个网站来监视游戏时间,并确保他们不会对我改变(再次)。我已经尝试过多种方式来做到这一点,上面评论最多,但是他们都将我重定向回登录页面。有任何想法吗?谢谢。

回答

3

正如我在给定网站中看到的登录按钮不在submit标记中。登录是javascript函数

<a ... href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$btnLogin','')" </a>

mechanize无法处理JavaScript。我遇到了非常类似的问题,并提出了使用Spynner的解决方案。 它是无头网页浏览器。因此,您可以使用机械化来完成相同的任务,并且具有JavaScript支持。

+0

这样做更有意义。谢谢。 – 2013-03-25 21:58:01

+0

关于如何从下拉按钮(javascript)中选择选项的任何想法?我已经想出了如何填写我的用户名和密码,但我现在需要选择我的学校。 – 2013-03-26 00:58:11

+0

你可以在spinner中运行js代码,我猜它比在python中更容易。它看起来是这样的:''browser.runjs('$(“[schid = e002364c7b414cfd8195be06fb7707ba]”)。click()');''schid'是'html'中特定学校'li'项目的属性。这里是要点我已经尝试过:https://gist.github.com/zygisx/5243735 – 2013-03-26 07:44:16