import urllib,urllib2,cookielib
import re
import datetime
class Loginjx:
#伪装browser
header = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
username = ''
passwd = ''
cookie = None #cookie对象
cookiefile = './cookies.dat' #cookie临时存放地
user = ''
def __init__(self,username,passwd):
self.username = username
self.passwd = passwd
#cookie设置
self.cookie = cookielib.LWPCookieJar() #自定义cookie存放
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookie))
urllib2.install_opener(opener)
#登陆
def login(self):
#请求参数设置
postdata = {
'username':self.username,
'password':self.passwd,
'cookietime':2592000,
'dosubmit':'登录',
'forward':''
}
postdata = urllib.urlencode(postdata)
#发起请求
req = urllib2.Request(
url='http://www.gjjx.com.cn/index.php?m=member&c=index&a=login',
data= postdata,#请求数据
headers = self.header #请求头
)
result = urllib2.urlopen(req).read()
result = str(result)
self.user = self.username
self.cookie.save(self.cookiefile)#保存cookie
if '登陆成功' in result:
print("%s 你已成功登陆。---------\n" %(self.user))
flag = True
else:
print("%s 登陆可耻的失败鸟")
flag = False
return flag
def get_uid(self):
uid_url = urllib2.Request(
url='http://www.gjjx.com.cn/index.php?m=member&c=index&a=appointment',
headers = self.header
)
auth = urllib2.urlopen(uid_url).read()
result = str(auth)
uid = re.findall( '''学员证号<span>(\d+)</span>''', result)
return uid[0]
def order_class(self,uid="61394720",yyrq="25-DEC-11",sd="5",cnbh="32220",traint="2"):
base_url = "http://www.gjjx.com.cn/index.php?m=member&c=index&a=bpk&"
query_param = "id=%s&yyrq=%s&sd=%s&cnbh=%s&traint=%s" % (uid,yyrq,sd,cnbh,traint)
print base_url + query_param
uid_url = urllib2.Request(
url= (base_url + query_param),
headers = self.header
)
auth = urllib2.urlopen(uid_url).read()
result = str(auth)
if "过期" in result:
return "timeout"
elif "成功" in result:
return "ok"
elif "同一车时不能重复预约" in result:
return "ok"
else:
return "failed"
print("Requesting......")
#用户名密码
login = Loginjx('username','password')
#时段 5 - 07:00--12:00 6 - 13:00--18:00
sd = "5"
#场内编号
cnbh = "32221"
#预约日期
order_date = '2011-12-25'
yyrq = datetime.datetime.strptime(order_date,'%Y-%m-%d').strftime('%d-%b-%y').upper();
#yyrq="25-DEC-11"
#科目类别 0 桩训 2 模拟 ....
traint="2"
flag = False
order_ok = False
while flag == False:
flag = login.login()
if flag:
uid = login.get_uid()
while order_ok == False:
result = login.order_class(uid=uid,yyrq=yyrq,sd=sd,cnbh=cnbh,traint=traint)
if result == "timeout":
print("超时!重新登录!")
flag = False
order_ok = False
elif result == "failed":
print("正在不断尝试")
pass
else:
order_ok = True
flag = True
print("不小心成约车功了!!")