lhj588
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("不小心成约车功了!!")

  

分类:

技术点:

相关文章: