当前位置: 首页 > news >正文

兰州市住房保障和城乡建设局网站网络优化工作内容

兰州市住房保障和城乡建设局网站,网络优化工作内容,网站建设创意,大连响应式网站建设人生苦短 我用python 这个大家应该都知道吧? 是中国综合类现场娱乐票务营销平台, 业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。 如何快速抢票? 那么, 今天带大家用Python来制作一个自动抢票的脚本小程序 本文源码python安…

人生苦短 我用python

这个大家应该都知道吧?

是中国综合类现场娱乐票务营销平台,
业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。

如何快速抢票?

那么,
今天带大家用Python来制作一个自动抢票的脚本小程序

本文源码+python安装包 : 点击此处跳转文末名片获取

在这里插入图片描述

知识点:

  • 面向对象编程
  • selenium 操作浏览器
  • pickle 保存和读取Cookie实现免登陆
  • time 做延时操作
  • os 创建文件,判断文件是否存在

开发环境:

  • 版 本:anaconda5.2.0(python3.6.5)
  • 编辑器:pycharm

第三方库:

selenium >>> pip install selenium==3.4.1

步骤

1. 实现免登陆
第一次登陆的时候 会帮助我记录我们的登陆信息 set_cookie 登陆成功之后 cookie会发生变化 后续抢票: 直接使用我们记录好的登陆信息 get_cookie

2. 抢票并且下单

准备好了之后就开始正式写代码吧!

在这里插入图片描述

首先导入本次所需的模块

from selenium import webdriver  # 操作谷歌浏览器 需要额外安装的 并且现在安装这个模块得指定版本 3.4
from time import sleep
import pickle  # 保存和读取cookie实现免登录的工具
import os   # 操作文件的模块

第一步,实现免登录

确定目标,设置全局变量

damai_url = ""
# 登录页
login_url = ""
# 抢票目标页
target_url = 'https://detail.damai.cn/item.htm?spm=a2oeg.search_category.0.0.77f24d15RWgT4o&id=654534889506&clicktitle=%E5%A4%A7%E4%BC%97%E7

初始化加载

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 != '网站名称':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"))  # 载入cookiefor 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 = Truebrowser = self.drivertry:browser.find_element_by_xpath(element)return flagexcept:flag = Falsereturn 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').textif buybutton == "提交缺货登记":# 改变现有状态self.status=2self.driver.get(target_url)print('###抢票未开始,刷新等待开始###')continueelif buybutton == "立即预定":self.driver.find_element_by_class_name('buybtn').click()# 改变现有状态self.status = 3elif 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 = 5except:print('###未跳转到订单结算界面###')title = self.driver.titleif 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]/divwhile 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()

测试代码

if __name__ == '__main__':try:con = Concert()             # 具体如果填写请查看类中的初始化函数con.enter_concert()         # 打开浏览器con.choose_ticket()         # 开始抢票except Exception as e:print(e)con.finish()

效果大致演示

在这里插入图片描述

最后祝大家都能抢到心仪的票票~

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

http://www.tj-hxxt.cn/news/129281.html

相关文章:

  • 云平台网站叫什么seo站内优化技巧
  • 宝安第一网站常德论坛网站
  • 一个好的营销型网站模板怎么推广一个网站
  • 个人做电影网站违法吗网上营销推广
  • 做外贸为什么要知道b2b网站网页界面设计
  • linux写wordpress泰安网站seo
  • 网站建设和整改方案国外网络推广
  • 图片识别地点的软件东莞网站seo技术
  • wordpress网站go.php跳转域名注册 万网
  • 暖色系网站模板百度软件市场
  • 怎么做企业的网站杭州网站外包
  • 找别人做的淘客网站 会不会有问题关键词优化公司排名
  • 怎么给自己公司做网站华为手机软文范文300
  • 行业网站设计公司专业网站推广引流
  • 建网站的公司南京百度网址大全免费下载
  • 成都网站开发企业宣传软文范例
  • 湖南专业做网站公司有哪些网站推广优化招聘
  • 网站测试有哪些主要工作电工培训内容
  • 构建自己网站seo搜索引擎优化技术教程
  • 武汉网站优化怎么做抖音黑科技引流推广神器
  • 做阿里巴巴网站应怎样定位百度seo招聘
  • 重庆五号线金建站关键词排名快照优化
  • 制作销售网站精准营销的典型案例
  • eclipse 做网站给你一个网站怎么优化
  • 专业APP客户端做网站网络营销策划的概念
  • 服装批发网站seo推广任务小结
  • 做免费网站教程国vs手机系统优化软件
  • 国外哪个网站可以做外贸比较好南京高端品牌网站建设
  • 日照网站开发公司seo网络营销的技术
  • 站中站网站案例长沙网络营销顾问