爬取12306车票信息(初级版本)

本文介绍了爬取12306车票信息的初级版本,重点探讨了解析地点与三字码对应、网址中JS转换以及如何分类打印火车信息等三大难点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# coding=utf-8
import requests
import argparse
import datetime
import re
import os
import json
import ssl
import urllib.parse
from collections import deque, OrderedDict

# 获取每个站点的名字和对应的代码,并保存到本地
filename = 'station_name.txt'
stationlist_url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js'
response = requests.get(stationlist_url, verify=False)
if response.status_code == 200:
    print("station_name_code():获取站点信息成功!")
    with open(filename, 'w') as f:
        for each in response.text.split('=')[1].split('@'):
            if each != "'":
                f.write(each)
                f.write('\n')
else:
    print('station_name_code() error! status_code;{}, url:{}'.format(response.status_code,response.url))

# 功能:从站点文件中提取站点与其对应的代码,并保存到文件中
if not os.path.exists(filename):
    print('save_station_code():', filename, '不存在,正在下载!')
file = 'name_code.json'
name_code_dict = {}
with open(filename, 'r') as f:
    for line in f:
        # 对读取的行都进行split操作,然后提取站点名和其代码
        name = line.split('|')[1]  # 站点名字
        code = line.split('|')[2]  # 每个站点对应的代码
        name_code_dict[name] = code  #每个站点肯定都是唯一的
with open(file, 'w') as f:
    json.dump(name_code_dict, f, ensure_ascii=False)


with open("name_code.json", 'r') as f:
    areatocode = json.loads(f.read())
    # print(areatoc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值