学习使用selenium实现半自动登录12306

根据今天学习的内容自己来实操一遍登录流程

首先要明确登录流程

1、打开12306网站

2、打开登录界面

3、选择扫码登录(因为账号登录需要输入验证码)

4、进入12306主页

因为仍然需要用手机扫码登录,故为半自动

我们先定义一个大类叫TrainSpider

class TrainSpider(object):  #面向对象编程

    def __init__(self,from_station,to_station,date):#定义初始init方法
        self.from_station=from_station
        self.to_station=to_station
        self.date=date
    

    def run(self):  #调用其他方法
        #登录
        self.login()

其中我们先定义初始化init方法将出发地,目的地,出发时间放入,再在run方法中调用login函数

于是,接下来要编写login函数

在写login之前,我们要导入我们的selenium库,并创建我们的网页对象

from selenium import webdriver
driver=webdriver.Chrome()

login方法

 def login(self):
        driver.get(self.login_url)
        WebDriverWait(driver,600).until(
            ec.url_to_be(self.profile_url)
        )
        print('登陆成功!')

其中我们用到了显式等待的expected_conditions模块,故还需要导入以下库

from selenium.webdriver.support.ui import WebDriverWait   #显示等待
from selenium.webdriver.support import expected_conditions as ec

最后将爬虫写一个启动程序

def start():
    spider=TrainSpider('武汉','长沙','2023-12-01')
    spider.run()
if __name__ == '__main__':
    start()

附上完整代码

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait   #显示等待
from selenium.webdriver.support import expected_conditions as ec

driver=webdriver.Chrome()  #创建网页对象

class TrainSpider(object):  #面向对象编程

    login_url='https://kyfw.12306.cn/otn/resources/login.html'
    profile_url='https://kyfw.12306.cn/otn/view/index.html'

    def __init__(self,from_station,to_station,date):
        self.from_station=from_station
        self.to_station=to_station
        self.date=date
    def login(self):
        driver.get(self.login_url)
        WebDriverWait(driver,600).until(
            ec.url_to_be(self.profile_url)
        )
        print('登陆成功!')

    def run(self):
        #登录
        self.login()

def start():
    spider=TrainSpider('武汉','长沙','2023-12-01')
    spider.run()
if __name__ == '__main__':
    start()

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值