python实战:获取全国火车站、高铁站信息(附完整代码) | 您所在的位置:网站首页 › 高铁车次号码规则查询 › python实战:获取全国火车站、高铁站信息(附完整代码) |
通过本文可以获取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 实验室设备网 版权所有 |