当前位置:首页 » 《关注互联网》 » 正文

2024年Python最全用Python制作一个自动抢票脚本_python抢票脚本,Python面试项目全代码

1 人参与  2024年11月04日 08:00  分类 : 《关注互联网》  评论

点击全文阅读


网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

class Concert:    def __init__(self):        self.status = 0         # 状态,表示如今进行到何种程度        self.login_method = 1   # {0:模拟登录,1:Cookie登录}自行选择登录方式        self.driver = webdriver.Chrome(executable_path='chromedriver.exe')        # 默认Chrome浏览器
登录调用设置cookie
def set_cookie(self):    self.driver.get(damai_url)    print("###请点击登录###")    while self.driver.title.find('大麦网-全球演出赛事官方购票平台') != -1:        sleep(1)    print('###请扫码登录###')    while self.driver.title != '大麦网-全球演出赛事官方购票平台-100%正品、先付先抢、在线选座!':       sleep(1)    print("###扫码成功###")    pickle.dump(self.driver.get_cookies(), open("cookies.pkl", "wb"))    print("###Cookie保存成功###")    self.driver.get(target_url)
获取cookie
def get_cookie(self):    try:        cookies = pickle.load(open("cookies.pkl", "rb"))  # 载入cookie        for cookie in cookies:            cookie_dict = {                'domain':'.damai.cn',  # 必须有,不然就是假登录                'name': cookie.get('name'),                'value': cookie.get('value')            }            self.driver.add_cookie(cookie_dict)        print('###载入Cookie###')    except Exception as e:        print(e)
登录
def login(self):        if self.login_method==0:            self.driver.get(login_url)                                            # 载入登录界面            print('###开始登录###')        elif self.login_method==1:            if not os.path.exists('cookies.pkl'):                                 # 如果不存在cookie.pkl,就获取一下                self.set_cookie()            else:                self.driver.get(target_url)                self.get_cookie()
打开浏览器
def enter_concert(self):    """打开浏览器"""    print('###打开浏览器,进入大麦网###')    # self.driver.maximize_window()           # 最大化窗口    # 调用登陆    self.login()                            # 先登录再说    self.driver.refresh()                   # 刷新页面    self.status = 2                         # 登录成功标识    print("###登录成功###")    # 后续德云社可以讲    if self.isElementExist('/html/body/div[2]/div[2]/div/div/div[3]/div[2]'):        self.driver.find_element_by_xpath('/html/body/div[2]/div[2]/div/div/div[3]/div[2]').click()

第二步,抢票并下单

判断元素是否存在
def isElementExist(self, element):    flag = True    browser = self.driver    try:        browser.find_element_by_xpath(element)        return flag    except:        flag = False        return flag
选票操作
def choose_ticket(self):    if self.status == 2:                  #登录成功入口        print("="*30)        print("###开始进行日期及票价选择###")        while self.driver.title.find('确认订单') == -1:           # 如果跳转到了订单结算界面就算这步成功了,否则继续执行此步            try:                buybutton = self.driver.find_element_by_class_name('buybtn').text                if buybutton == "提交缺货登记":                    # 改变现有状态                    self.status=2                    self.driver.get(target_url)                    print('###抢票未开始,刷新等待开始###')                    continue                elif buybutton == "立即预定":                    self.driver.find_element_by_class_name('buybtn').click()                    # 改变现有状态                    self.status = 3                elif buybutton == "立即购买":                    self.driver.find_element_by_class_name('buybtn').click()                    # 改变现有状态                    self.status = 4                # 选座购买暂时无法完成自动化                elif buybutton == "选座购买":                    self.driver.find_element_by_class_name('buybtn').click()                    self.status = 5            except:                print('###未跳转到订单结算界面###')            title = self.driver.title            if title == '选座购买':                # 实现选座位购买的逻辑                self.choice_seats()            elif title == '确认订单':                while True:                    # 如果标题为确认订单                    print('waiting ......')                    if self.isElementExist('//*[@id="container"]/div/div[9]/button'):                        self.check_order()                        break
选择座位
def choice_seats(self):        while self.driver.title == '选座购买':            while self.isElementExist('//*[@id="app"]/div[2]/div[2]/div[1]/div[2]/img'):                # 座位手动选择 选中座位之后//*[@id="app"]/div[2]/div[2]/div[1]/div[2]/img 就会消失                print('请快速的选择您的座位!!!')            # 消失之后就会出现 //*[@id="app"]/div[2]/div[2]/div[2]/div            while self.isElementExist('//*[@id="app"]/div[2]/div[2]/div[2]/div'):                # 找到之后进行点击确认选座                self.driver.find_element_by_xpath('//*[@id="app"]/div[2]/div[2]/div[2]/button').click()
下单操作
def check_order(self):    if self.status in [3,4,5]:        print('###开始确认订单###')        try:            # 默认选第一个购票人信息            self.driver.find_element_by_xpath('//*[@id="container"]/div/div[2]/div[2]/div[1]/div/label').click()        except Exception as e:            print("###购票人信息选中失败,自行查看元素位置###")            print(e)        # 最后一步提交订单        time.sleep(0.5)  # 太快会影响加载,导致按钮点击无效        self.driver.find_element_by_xpath('//div[@class = "w1200"]//div[2]//div//div[9]//button[1]').click()
抢票完成,退出
def finish(self):    self.driver.quit()**(1)Python所有方向的学习路线(新版)**  这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。最近我才对这些路线做了一下新的更新,知识体系更全面了。![在这里插入图片描述](https://img-blog.csdnimg.cn/1f807758e039481fa866130abf71d796.png#pic_center)**(2)Python学习视频**包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。![在这里插入图片描述](https://img-blog.csdnimg.cn/d66e3ad5592f4cdcb197de0dc0438ec5.png#pic_center)**(3)100多个练手项目**我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。![在这里插入图片描述](https://img-blog.csdnimg.cn/f5aeb4050ab547cf90b1a028d1aacb1d.png#pic_center)**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。****[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)****一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

点击全文阅读


本文链接:http://m.zhangshiyu.com/post/182066.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1