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表格,查看数据集如下,包含车站名称、所属铁路局、车站电报码、售票时间等信息:

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值