splinter & chromedriver 模拟操作网页

守給你的承諾、 提交于 2020-01-24 10:11:46

splinter & chromedriver 模拟操作网页

PS: 也是从网上各个帖子中学习的Python,因此代码的格式以及内容有粘贴网上其他大神的代码,如有侵权请告知删除

以12306为例,粘贴的代码为部分代码,理解意思就好

1 模拟登录
登录网址:https://kyfw.12306.cn/otn/login/init
在这里插入图片描述
如上图所示,输入用户名的name为loginUserDTO.user_name,同理,输入密码的name为userDTO.password,因此用以下代码进行网页填充

#self是声明的类
self.driver.visit("https://kyfw.12306.cn/otn/login/init")
sleep(1)
self.driver.fill('loginUserDTO.user_name', "123456")
self.driver.fill('userDTO.password', "654321")

2 Chromedriver调用

self.driver = Browser(driver_name="chrome", executable_path="D:\\Program Files (x86)\\ChromeCore\\Chromedriver.exe)

3 输入买票信息,进行查询
在这里插入图片描述
如上图所示,买成都到长沙的火车,出发时间2020-01-20,开启网页开发者工具,点击查询
在这里插入图片描述
点击查询后,会发现这些信息,可以看到:
_jc_save_fromStation:出发站
_jc_save_toStation:到达站
_jc_save_fromDate:出发时间
所以,采用以下语句对这些选项进行填充

self.driver.cookies.add({"_jc_save_fromStation": "图中数值"})
self.driver.cookies.add({"_jc_save_toStation": "图中数值"})
self.driver.cookies.add({"_jc_save_fromDate": "图中数值"})
self.driver.reload()

4 选择出发的时间段,下拉菜单
在这里插入图片描述

elemt = self.driver.find_by_xpath('//select[@id="cc_start_time"]//option[@value="' + str(self.train_date) + '"]', ).first
elemt.click()

5 点击查询按钮
在这里插入图片描述

self.driver.find_by_text('查询').click()

6 看是否有符合要求的车辆信息
在这里插入图片描述

Details = self.driver.find_by_id('queryLeftTable')[0].find_by_xpath('//tr[starts-with(@id,"ticket_")]')                    
hile len(elems) == 0:
	sleep(0.5)
    Details = self.driver.find_by_id('queryLeftTable')[0].find_by_xpath('//tr[starts-with(@id,"ticket_")]')

7 查看搜索出的火车列表中,有没有座位(不区分席位类别)
在这里插入图片描述

self.seat_type_index = 0
for Current_Train in Details:
	if (Current_Train.text == ''):
    print('不介意座位种类情况下:没票')
    continue
    # 共有12个座位类型
    for i in range(1,12):
		if Current_Train.find_by_tag('td')[i].text != '--' or \
                                        Current_Train.find_by_tag('td')[i].text != '无':
			self.seat_type_index = i
            break
    if(self.seat_type_index == 0):
		print('不介意座位种类情况下:无票')
		continue

8 如果有票,进行预定
在这里插入图片描述

Current_Train.find_by_css('td.no-br>a')[0].click()

9 选择乘坐人
在这里插入图片描述

self.driver.find_by_text("AA").last.click()

10 其他还有提交订单,确认等步骤,不再描述

PS:
动态等待网页加载

# query_ticket为网页中的ID
wait_time('query_ticket') 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!