弱鸡代码,不喜轻喷。。。

# 爬取12306车次信息
# 浏览器发送请求(请求的url,请求的方式get/post,请求数据)
# 服务器作出响应(响应状态码)
# 服务器响应状态码:418,被发现是爬虫了哦
# 爬虫:模拟浏览器向服务器发送请求并处理响应结果

# 安装一个第三方模块 requests
import requests
import re
# 使用正则表达式(根据规则提取想要的数据),
# 需要引入re这个python自带的模块


# 定义一个函数,模拟浏览器向服务器发送请求,获得返回的数据
# 成功发送请求,使用requests.get(),但是服务器发现是
# 爬虫了,所以响应回来的数据不是想要的数据,解决方案:
# 1.添加一个header(# user-agent和cookie,f12,找query)
# 2.还需要添加一个cookie
# 这样就成功骗过了服务器,拿到了数据
def send_requests():

# 由于该url请求方式为get,所以使用requests中的get方法
 url='https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=********************'

# 添加请求头,避免被识别为爬虫(useragent+cookie)
 headers={'User-Agent':'**********',
          'Cookie':'***************'}

 resp=requests.get(url,headers=headers)  # 请求的结果为响应

# 设置响应的编码格式,否则乱码
 resp.encoding='utf-8'
 return resp


# 解析数据,系统返回的数据要先转为json格式的数据(json数据在线解析):
# 转为json后发现,这是字典中套了一个字典,把想要的数据转为列表提取出来,直接
# 定义一个列表=字典【key】【key】
def parse_json(resp,city):  # 提取数据
    json_ticket=resp.json()  # 将响应结果转为json
    data_list=json_ticket['data']['result']
# 提取车次的列表:从json格式中
# 提取车次的列表,
# 先提取键为data的值,
# 再提取键为result的值
# 遍历每一个车次的信息
# 定义一个空列表,用来存放打印出来的数据
    lst = []
    for item in data_list:
        d=item.split('|')
# 根据竖线把列表中的信息进行分隔,
# 因为给到的数据就是用|进行分隔的
        lst.append([d[3],city[d[6]],city[d[7]],d[31],d[30],d[13]])
    return lst
    # 打印出来的数据
    # 从列表中获取索引为3的表示车次,
    # 索引6为查询起始站
    # 索引7查询到达站
    # 索引为31表示一等座
    # 索引为30表示二等座
    # 索引为13表示出行时间


def start():
    lst=parse_json(send_requests(),get_city())
    # 筛选最后输出的列表中的数据,去掉没有票的车次
    for i in lst:
        if i[3] != '无' and i[3] != '':
            print(i)


# 获取station_name的信息(f12找station name.js,拿到url和user-agent)的方法
def get_city():
    url='https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9172'
    headers={'User-Agent':'***********'}
    resp=requests.get(url,headers=headers)
    resp.encoding='utf-8'
    stations=re.findall('([\u4e00-\u9fa5]+)\|([A-Z]+)',resp.text)
    # 正则表达式,提取想要的内容
    stations_data=dict(stations)
    # 将上面的城市列表转成字典
    station_d={}
    # 空字典,用于将key和value的位置进行交换
    for item in stations_data:
        station_d[stations_data[item]]=item
    return station_d


if __name__ == '__main__':
    start()

Look, if you had one shot, one opportunity To seize everything you ever wanted,one moment ,Would you capture it or just let it slip?