Python用selenium实现模拟登录,各种抢票脚本的第一步

212 篇文章 1 订阅
137 篇文章 5 订阅

本次目标

图片

知识点

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

第三方库

selenium >>> pip install selenium==3.4.1

开发环境

  • 版 本:anaconda(python3.8.8)
  • 编辑器:pycharm

有疑问的同学,或者想要Python相关资料的可以加群:1136201545 找管理员领取资料和一对一解答

先导入所需模块

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

定义变量

# 大麦网主页damai_url = 'https://www.damai.cn/'# 登陆login_url = 'https://passport.damai.cn/login?ru=https%3A%2F%2Fwww.damai.cn%2F'# 抢票目标页面target_url = 'https://detail.damai.cn/item.htm?id=610820299671'

图片
在这里插入图片描述

在这里插入图片描述

在这个类里面完成所有的登陆功能

class Concert:    # 完成一个初始化    def __init__(self):        self.status = 0  # 状态码, 表示当前操作执行到了哪个步骤        self.login_method = 1  # {0: 模拟登陆, 1: 免登录}        self.driver = webdriver.Chrome(executable_path='chromedriver.exe')

登陆网站的时候要用的方法 没有登陆的情况下

第一次登陆的时候,会帮助我记录我们的登陆信息

登陆成功之后 cookie会发生变化

def set_cookies(self):    self.driver.get(damai_url)  # 打开大麦网主页    print("###请点击登陆###")    # 如果说我一直没有点击登陆? 我是不是这个程序就停在这里了    while self.driver.title.find('大麦网-全球演出赛事官方购票平台') != -1:        sleep(1)    # 程序休眠    print("###扫码成功###")    pickle.dump(self.driver.get_cookies(), open('cookies.pkl', 'wb'))   #  保存cookie    print('###cookie保存成功###')    self.driver.get(target_url)

直接拿本地的登陆信息

假如我现在已经登陆过了,那么直接拿本地的登陆信息,直接登陆就可以了

def get_cookie(self):    cookies = pickle.load(open('cookies.pkl', 'rb'))    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###')

实现登录

def login(self):    if self.login_method == 0:        self.driver.get(login_url)  # 跳转到登陆界面登陆一下        print('###开始登陆###')    elif self.login_method == 1:        # 如果我本地没有cookies.pkl文件        if not os.path.exists('cookies.pkl'):            self.set_cookies()      # 没有文件的情况下, 再次登陆一下        else:            self.driver.get(target_url)  # 跳转到抢票页面            self.get_cookie()           # 登陆信息载入浏览器

打开浏览器功能,调用所以所有函数

调用登陆,并且刷新页面,改变登陆成功的标识

def enter_concert(self):    print('###打开浏览器, 进入大麦网###')    # 调用登陆    self.login()    self.driver.refresh()    self.status = 2    print('###登陆成功###')

执行代码

if __name__ == '__main__':
    con = Concert()
    con.enter_concert()

在学习python中有任何困难不懂的可以微信扫描下方CSDN官方认证二维码加入python交流学习这里有不错的学习教程和开发工具。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值