12306所有车次及时刻表的爬取中

您所在的位置:网站首页 高2206列车时刻表 12306所有车次及时刻表的爬取中

12306所有车次及时刻表的爬取中

2023-09-16 23:41| 来源: 网络整理| 查看: 265

在上一篇博文里,我最后大概写了下第一个小目标实现的思路,下面先展示一下第一个目标实现的成果。

一、成果展示

爬取完之后的结果大概是这个样子的,每一天的数据保存成一个文件夹,我是爬取了近一个月的车次信息,每一个文件夹里面存着若干个txt文件 在这里插入图片描述

这是文件夹的内部,txt的命名就是我上一篇博文里提到的爬取的时候的关键字keyword 在这里插入图片描述 打开其中一个txt文件,里面存的是这样的数据,这样看着有点乱,把它复制一下,放到 (http://www.json.cn/) 在这里插入图片描述 解析完之后是下面这样的,如果搜索的关键字没有返回车次数据,那么data这个list就是空,但是结构和有车次数据的相同,我们要做的就是遍历data这个list,然后取出里面的信息。 在这里插入图片描述 处理完每个txt文件之后得到这样的一个表格,这样我们的小目标就基本实现,已经能取到全国所有车次和对应的车次编号啦。 在这里插入图片描述

二、小目标部分的代码

我把所需要爬的关键字分成三类,第一种是只需要一次循环的C0-C9这样的,第二种是需要两次循环的,C10-C19这样的,第三类是纯数字的,不带字母的,这种的比较特殊,因为在搜130时,所有字母中含130的也会显示出来,如果看不懂什么意思,建议自己打开12306去试一试,看一看结果。如果你有更好地方法,欢迎沟通交流,我目前只能通过这种笨笨的方法来获取。

第一类的代码 import pandas as pd import requests import csv import json import os import time url = "https://search.12306.cn/search/v1/train/search?keyword={}&date={}" # 先准备基础的url date_list = ["20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108"] # 准备日期列表,因为日期不一样,发车的车次会有变化,建议多选几天,最后再去重,尽量得到完整的车次数据 keyword_list = ["C1", "C9", "D0", "D4", "D9", "G4", "G9", "K2", "K3", "K4", "K5", "K6"] # 这是第一次就


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3