最近在学习Python的网络操作,网上有很多模拟登陆方法。这里做个笔记。 没有验证码的还是比较容易的。
#coding:utf-8
import re
import urllib
import urllib2
import cookielib
import os
import json
import sys
import time
from urllib import quote,unquote
from urllib2 import HTTPError
from urllib2 import URLError
#登陆模块
def Login():
try :
cj = cookielib.CookieJar();
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));
urllib2.install_opener(opener);
#打开获得 cookie
info_URL = "http://portal.uestc.edu.cn/index.portal"
info_Login_URL = "https://uis.uestc.edu.cn/amserver/UI/Login";
infoOPEN = urllib2.urlopen(info_URL)
print 1
#生成要发送的数据
LoginData = {
'IDToken0':'',
'IDToken1':'20142106XXXX',
'IDToken2':'xxxxxx',
'IDButton':'Submit',
'goto':'aHR0cDovL3BvcnRhbC51ZXN0Yy5lZHUuY24vbG9naW4ucG9ydGFs',
'encoded':'true',
'gx_charset':'UTF-8',
};
print 2
#把发送数据转换格式
LoginData = urllib.urlencode(LoginData);
#生成请求数据
info_Login_Request = urllib2.Request(info_Login_URL, LoginData);
#添加数据头部
info_Login_Request.add_header('Content-Type', "application/x-www-form-urlencoded");
info_Login_Request.add_header('User-Agent', "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36");
print 3
#发送请求,尝试登陆
info_Login_Open = urllib2.urlopen(info_Login_Request);
print 4
#验证登陆是否成功
tt = urllib2.urlopen(info_URL).read()
fout=open("tt.html","w")
fout.write(tt)
print 'success!'
except :
print "登陆出错啦!"
if __name__ == "__main__" :
Login()
经过测试成功
IDtoken1和IDtoken2填用户名和密码。其他不用变
linux下面 直接python spider.py 即可运行