根据今天学习的内容自己来实操一遍登录流程
首先要明确登录流程
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()