python实战:获取全国火车站、高铁站信息(附完整代码) 您所在的位置:网站首页 高铁车次号码规则查询 python实战:获取全国火车站、高铁站信息(附完整代码)

python实战:获取全国火车站、高铁站信息(附完整代码)

2024-06-01 21:47| 来源: 网络整理| 查看: 265

通过本文可以获取3091个全国火车站的车站名称、所属铁路局、车站电报码、售票时间等信息。

分析网页

打开12306官网,https://www.12306.cn/,点击“信息查询”下面的“起售时间”。

键盘 F12 快捷键,或者鼠标右击“检查”打开浏览器的检查页面。

在“起售时间”的输入框内任意输入一个车站名称。

找到queryAllCacheSaleTime这个请求:

在queryAllCacheSaleTime请求response的data值就是全国的车站。

可以看出这是一个非常简单的爬虫,一个请求就可以完成获取任务,很适合初学者练手。

编写代码

接下来编写python代码,主要用到的库是requests和pandas。 首先requests库发送请求,获取response,转换为json格式。 然后用pandas库的json_normalize函数将json数据展平。 最后用pandas库将数据保存到excel表格内。

完整代码如下:

import requests import pandas as pd import time from datetime import datetime url = "https://kyfw.12306.cn/index/otn/index12306/queryAllCacheSaleTime" headers = { "Cookie": "Cookie", #切换自己的Cookie "User-Agent": "User-Agent" #切换自己的User-Agent } content_json = requests.get(url=url, headers=headers).json() print("等待3s") time.sleep(3) # 防止被检测(不要低于3) print(content_json) # 用于观察 # df = pd.DataFrame(content_json['data']) content_list = pd.json_normalize(content_json['data'], errors='ignore') if __name__ == '__main__': # 当前时间作为文件名后缀 curr_time = datetime.now() timestamp = datetime.strftime(curr_time, '%Y-%m-%d %H-%M-%S') # time = time.time() # 时间 # 将 DataFrame 保存为 excel 文件 content_list.to_excel(f"全国火车站-{timestamp}.xlsx", index=False) print("保存完成!") # 查看 DataFrame 的行数和列数。 rows = content_list.shape print("请求得到的表格行数与列数:", rows)

运行代码,pycharm控制台输出如下,获取到3091个全国火车站:

获得数据

打开excel表格,查看数据集如下,包含车站名称、所属铁路局、车站电报码、售票时间等信息:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有