在腾讯课程看了一节免费课,感觉讲得很好,所以就根据课程将过程写了下来,中间也遇到很多坑。具体都写到注释里了。
遇到的问题:在input回车时,提示SyntaxError: unexpected EOF while parsing,未成功解决,希望有大神帮忙,谢谢。
# _*_ coding:utf-8 _*_
# 从selenium引入webdriver驱动
from selenium import webdriver
# 引入time的sleep方法,使用sleep(3)可让程序等待1s
# 也可以使用import,使用时代码为time.sleep(3)
from time import sleep
# 用来处理 选择下拉框的数据
from selenium.webdriver.support.select import Select
# 代表使用Chrome浏览器,并返回1个对象driver。
# 等待3秒钟
driver = webdriver.Chrome()
sleep(3)
# 声明1个变量url_12306,并赋值网址
# 然后通过driver对象的get方法打开
# 浏览器最大化
# 等待3秒钟
url_12306 = "https://kyfw.12306.cn/otn/leftTicket/init"
driver.get(url_12306)
driver.maximize_window()
sleep(3)
# 出发地变量from_station。
# 清除当前数据
# 并输入“北京”,"\n"代表回车
from_station = driver.find_element_by_id("fromStationText")
from_station.click()
from_station.clear()
from_station.send_keys(u"北京\n")
sleep(2)
# 目的地变量to_station
# 清除当前数据
# 并输入“上海”,"\n"代表回车
to_station = driver.find_element_by_id("toStationText")
to_station.click()
to_station.clear()
to_station.send_keys(u"上海\n")
sleep(2)
# 发车时间变量start_time,并转为select的下拉格式
# 使用text定位。详细介绍见;https://blog.csdn.net/woshiyigerenlaide/article/details/103959190
start_time = Select(driver.find_element_by_id("cc_start_time"))
start_time.select_by_visible_text("12:00--18:00")
sleep(2)
# 点击“查询”queryticket
queryticket = driver.find_element_by_id("query_ticket")
queryticket.click()
sleep(3)
# 选择发车日期
# CSS写法详见:https://blog.csdn.net/woshiyigerenlaide/article/details/103961413
start_date = driver.find_element_by_css_selector("#date_range li:nth-child(4)")
start_date.click()
sleep(2)
# 我希望的车次
favorite_train = ["G131","G133"]
# 选择二等座有票的车次,因为不是唯一元素,所以用elements
# Xpath写法详见:https://blog.csdn.net/woshiyigerenlaide/article/details/104080735
train_list = driver.find_elements_by_xpath('//tbody[@id="queryLeftTable"]/tr/td[4][@class]/../td/div/div/div/a')
# 因为trani_list是个list,所以用for循环打印它的text
for train in train_list:
train_number = train.text
# 判断,如果有自己希望的车次,就提示
if train_number in favorite_train:
print (train_number+u"有票了")
# 预定车票,因为book_ticket是个列表,所以取第1个元素[0]
book_ticket = driver.find_elements_by_xpath('//tbody[@id="queryLeftTable"]/tr/td[4][@class]/../td[13]/a')[0]
book_ticket.click()
# 手动登录,利用input的回车输入方法,继续执行代码
input("enter")
sleep(3)
# 选择2个乘客
passenger = driver.find_element_by_id("normalPassenger_0")
passenger.click()
sleep(2)
# 提交订单
submit_order = driver.find_element_by_id("submitOrder_id")
submit_order.click()
sleep(5)
break
else:
print (train_number+u"暂时无票")
driver.quit()