parent
68cbee584c
commit
fae5ca9964
@ -0,0 +1,88 @@
|
|||||||
|
import requests
|
||||||
|
# 导入表格输出
|
||||||
|
import prettytable as pt
|
||||||
|
# 导入json
|
||||||
|
import json
|
||||||
|
import pymysql
|
||||||
|
from config import mysql_local
|
||||||
|
|
||||||
|
|
||||||
|
class chepiao_info:
|
||||||
|
def __init__(self):
|
||||||
|
self.conn = pymysql.connect(**mysql_local)
|
||||||
|
self.cursor = self.conn.cursor()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def save_data(self, num, start_time, end_time, use_time, topGrade, first_class, second_class, soft_sleeper, hard_sleeper, hard_seat, no_seat):
|
||||||
|
data = (num, start_time, end_time, use_time, topGrade, first_class, second_class, soft_sleeper, hard_sleeper, hard_seat, no_seat)
|
||||||
|
sql = "INSERT INTO chepiao_info (num, start_time, end_time, use_time, topGrade, first_class, second_class, soft_sleeper, hard_sleeper, hard_seat, no_seat) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
|
||||||
|
self.cursor.execute(sql, data)
|
||||||
|
self.conn.commit()
|
||||||
|
|
||||||
|
def Ticket(start_city, end_city, date):
|
||||||
|
# # 查票 输入 出发城市 / 目的城市 / 出发时间
|
||||||
|
# start_city = input('输入出发城市:') # 输入函数使用方法
|
||||||
|
# end_city = input('输入目的城市:')
|
||||||
|
# date = input('输入出发时间<2022-08-06>:')
|
||||||
|
# 读取城市json文件
|
||||||
|
f = open('city.json', encoding='utf-8') # 文件读取
|
||||||
|
# f.read() 字符串
|
||||||
|
city_json = json.loads(f.read()) # 数据容器转换
|
||||||
|
# 出发城市
|
||||||
|
from_station = city_json[start_city] # 字典取值
|
||||||
|
# 目的城市
|
||||||
|
to_station = city_json[end_city] # 字典取值
|
||||||
|
# 确定请求url
|
||||||
|
url = f'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={date}&leftTicketDTO.from_station={from_station}&leftTicketDTO.to_station={to_station}&purpose_codes=ADULT'
|
||||||
|
# 模拟浏览器
|
||||||
|
headers = {
|
||||||
|
'Cookie': '_uab_collina=165650330916153394558455; JSESSIONID=4E8C54B97C3C4A2836EFB3A6529F2FA7; _jc_save_wfdc_flag=dc; _jc_save_fromStation=%u7941%u9633%2CQWQ; _jc_save_toStation=%u957F%u6C99%2CCSQ; BIGipServerotn=535822858.24610.0000; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off; BIGipServerpool_passport=98828810.50215.0000; RAIL_EXPIRATION=1666352913084; RAIL_DEVICEID=UUAN3j96v_gsz37OlhGUDBYABtIVZXLmp5TFSAEwzFBx_tqx8r9Ar-jZUTup-K6STKZxdcyuK-7PqGLIOkQCxWsN8B6yF8HYHi0vxUkHWP8pbJgCCEnFwbbJ6tEYIVFOEZEQTBtCXtronC-e8nuewGsPhY725hV_; route=6f50b51faa11b987e576cdb301e545c4; _jc_save_fromDate=2022-10-20; _jc_save_toDate=2022-10-18',
|
||||||
|
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36',
|
||||||
|
|
||||||
|
}
|
||||||
|
# 发送请求 <Response [200]> 表示对于url地址发送请求,请求成功
|
||||||
|
response = requests.get(url=url, headers=headers)
|
||||||
|
# 2. 获取数据, 获取服务器返回响应数据 ---> 开发者工具里面response print(response.json())
|
||||||
|
# 序号
|
||||||
|
lis = []
|
||||||
|
page = 0
|
||||||
|
c = chepiao_info()
|
||||||
|
# 3. 解析数据, 获取 response.json() json字典数据, 字典取值, 键值对取值, 根据冒号左边, 提取冒号右边
|
||||||
|
for index in response.json()['data']['result']:
|
||||||
|
# split() 字符串分割方法 --> 返回是列表
|
||||||
|
content_list = index.split('|')
|
||||||
|
# 根据列表索引位置提取内容
|
||||||
|
num = content_list[3] # 车次
|
||||||
|
start_time = content_list[8] # 出发时间
|
||||||
|
end_time = content_list[9] # 到达时间
|
||||||
|
use_time = content_list[10] # 耗时
|
||||||
|
topGrade = content_list[25] # 特等座
|
||||||
|
if topGrade:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
topGrade = content_list[32]
|
||||||
|
first_class = content_list[31] # 一等
|
||||||
|
second_class = content_list[30] # 二等
|
||||||
|
hard_sleeper = content_list[28] # 硬卧
|
||||||
|
hard_seat = content_list[29] # 硬座
|
||||||
|
no_seat = content_list[26] # 无座
|
||||||
|
soft_sleeper = content_list[23] # 软卧
|
||||||
|
dit = {
|
||||||
|
'SerialNo': page,
|
||||||
|
'TravelNumber': num,
|
||||||
|
'DepartureTime': start_time,
|
||||||
|
'ArrivalTime': end_time,
|
||||||
|
'TimeTime': use_time,
|
||||||
|
'PremiumSeat': topGrade,
|
||||||
|
'FirstClassSeat': first_class,
|
||||||
|
'SecondClassSeat': second_class,
|
||||||
|
'SoftSleeper': soft_sleeper,
|
||||||
|
'HardSleeper': hard_sleeper,
|
||||||
|
'HardSeat': hard_seat,
|
||||||
|
'Noseat': no_seat,
|
||||||
|
}
|
||||||
|
lis.append(dit)
|
||||||
|
page += 1
|
||||||
|
c.save_data(num, start_time, end_time, use_time, topGrade, first_class, second_class, soft_sleeper, hard_sleeper, hard_seat, no_seat)
|
||||||
|
return lis
|
Binary file not shown.
Loading…
Reference in new issue