爬虫实战:使用requests库爬取12306余票信息

本文记录了一个简单的爬虫项目,通过requests库爬取12306网站的余票信息。首先分析查询余票的步骤,包括获取车站信息的URL和查询余票的URL。然后编写代码,先获取所有车站数据,再进行余票查询。最后在main函数中整合整个过程。示例代码展示了如何解析并提取所需数据。

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

最近看了一些爬虫的资料,试着自己写了一个小爬虫,爬取12306的余票信息。
代码很少,也没做什么优化,仅记录一下第一个爬虫。
思路分析:
查询余票的正常步骤肯定是打开12306,输入出发地,目的地,出发时间,点击查询。根据这个步骤,一步一步开始:
1.首先来到https://kyfw.12306.cn/otn/leftTicket,输入出发地等信息,点击查询,通过浏览器F12抓包分析可以发现,车站信息是从https://kyfw.12306.cn/otn/resources/js/framework/station_name.js获取到的,而余票信息通过https://kyfw.12306.cn/otn/leftTicket/queryX?leftTicketDTO.train_date=2019-02-21&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=SHH&purpose_codes=ADULT获取(这里查询的是北京到上海2月21号的票)。
2.开始撸代码,先获取所有站点的信息,并把对应的车站和代号存起来以后使用。

import requests

dict_station = {
   }
def station_name():
    url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js'
    resp = requests.get(url)
    if resp.status_code == 200:
        print('获取站点信息成功!')
        for each in resp.text.split('=')[1].split('@')[1:]:
            station = each.split('|')
            dict_station[station[1]] = station[2] 
    else:
        print('获取站点信息失败!')

3.接下来查询余票,查询其实很简单,只需把对应的信息放到url中get就好了,主要是要从获取到的数据中分析出我们需要的数据,如有无余票,余票多少等。

def left_ticket(from_s, to_s, date):
    global dict_station
    url = 'https://kyfw.12306.cn/otn/leftTicket/queryX'
    dict1 = {
   'leftTicketDTO.train_date':date,
                 'leftTicketDTO.from_station':dict_station[from_s],
                 'leftTicketDTO.to_station':dict_station[to_s],
                 'purpose_co
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D_ry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值