zoukankan      html  css  js  c++  java
  • 公交驾校自动约车脚本

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

      

  • 相关阅读:
    [quote] Rough Notes on Linux Networking Stack
    All my miscellaneous assembly
    chrome浏览器屏幕网页内嵌的flash广告?
    [quote] How to determine what target is given in Makefile from the make command-line?
    [quote] colour your linux command line
    python 3 函数
    python 2 控制流
    薛定谔的猫 转载
    using distance to keep track of the min in a stack
    Java String
  • 原文地址:https://www.cnblogs.com/lhj588/p/2500417.html
Copyright © 2011-2022 走看看