Python查询火车票
其他
2020-02-05 16:31:32
阅读次数: 0
import re, json, time from selenium import webdriver
def get_ticket(): from_city = input("出发站:") to_city = input("到达站:") date = input("出发日期(格式:2019-12-30):") file_name = input("存储文件:") driver = webdriver.Chrome() # 起始url url = 'https://www.12306.cn/index/' # 发送请求 driver.get(url) # 等待2s time.sleep(2) # 清除原有的值 driver.find_element_by_id('fromStationText').clear() # 点击,使输入框获取焦点 driver.find_element_by_id('fromStationText').click() # 输入值 driver.find_element_by_id('fromStationText').send_keys(from_city) # 获取局部刷新的数据,然后循环比对文字 from_text = driver.find_elements_by_class_name('ralign') # 下拉选项中选择对应车站并点击 for i in from_text: if i.text == from_city: i.click(); break
# 输入到达地(原理同上) driver.find_element_by_id('toStationText').clear() driver.find_element_by_id('toStationText').click() driver.find_element_by_id('toStationText').send_keys(to_city) to_text = driver.find_elements_by_class_name('ralign') for i in to_text: if i.text == to_city: i.click(); break # 选择出发时间 driver.execute_script("document.getElementById('train_date').value='{}'".format(date)) # 点击查询 driver.find_element_by_id("search_one").click() # 切换到数据页 windows = driver.window_handles function(){ //XM返佣 http://www.kaifx.cn/broker/xm.html driver.switch_to.window(windows[-1]) time.sleep(2) # 提取数据页数据 all_tr = driver.find_elements_by_xpath("//*[@id='queryLeftTable']/tr") li = list() # 保存数据 for tr in all_tr[::2]: dic = dict() data = re.sub(r'\n', " ", tr.text).split(' ') dic["日期"] = date dic["车次"] = data[0] dic["出发站"] = data[1] dic["到达站"] = data[2] dic["出发时间"] = data[3] dic["到达时间"] = data[4] dic["历时"] = data[5] dic["到达日期"] = data[6] dic["商务座"] = data[7] dic["一等座"] = data[8] dic["二等座"] = data[9] dic["高级软卧"] = data[10] dic["一等软卧"] = data[11] dic["动卧"] = data[12] dic["二等硬卧"] = data[13] dic["软座"] = data[14] dic["硬座"] = data[15] dic["无座"] = data[16] dic["其他"] = data[17] dic["备注"] = data[18] print(dic) li.append(dic) json.dump(li, open("ticket_" + file_name + ".json", "w", encoding="utf-8"), ensure_ascii=False) if li else print( "很抱歉,当前未找到从{} 到{} 的列车。".format(from_city, to_city))
time.sleep(2) # 关闭浏览器,退出浏览器 driver.close() driver.quit()
get_ticket() |
|
发布了551 篇原创文章 ·
获赞 1 ·
访问量 9031
转载自blog.csdn.net/xiaoyaGrace/article/details/104174828