爬取12306火车票车次等信息(python)

此博客介绍一个例子,主要是爬取相应日期的车次信息,并将这些信息存入PostgreSQL数据库中,涉及数据采集与数据库存储操作。

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

本例子中将爬取相应日期的车次信息到数据库中,用的是postgresql数据库

import requests
import json
from bs4 import BeautifulSoup
import psycopg2
##打开数据库并登陆
db = psycopg2.connect(host='localhost',port='5432',user=#####',password='#####',database='#####')
cursor = db.cursor()
cursor.execute("CREATE TABLE timetable(出发地 varchar not null,到达地 varchar not null,班次 varchar not null,出发时间 varchar not null,"
               "到达时间 varchar not null,总用时 varchar not null,出发日期 varchar not null)")
city_number = {'北京':'BJP','南京':'NJH','合肥':'HFH','上海':'SHH','郑州':'ZZF','徐州':'XCH','武汉':'WHN','石家庄':'SJP','杭州':'HZH','济南':'JNK'}
print("开始输入数据")
for i in city_number:
    for j in city_number:
        if not i == j:
            url = 'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2019-05-08&leftTicketDTO.from_st' \
                  'ation='+city_number[i]+'&leftTicketDTO.to_station='+city_number[j]+'&purpose_codes=ADULT'
            data = requests.get(url)
            data_json = data.json()['data']['result']
            for k in data_json:
                temp_list = k.split('|')
                #print(temp_list)
                if temp_list[1] == '预订':
                #根据分析发现相关位置在切割后位置固定
                    start_station = city_number[i]
                    end_station = city_number[j]
                    vehicle = temp_list[3]
                    start_time = temp_list[8]
                    end_time = temp_list[9]
                    all_time = temp_list[10]
                    date = temp_list[13]
                    #用insert将数据插入到数据库中
                    cursor.execute("insert into timetable values ('{}','{}','{}','{}','{}','{}','{}')"
                                   .format(start_station,end_station,vehicle,start_time,end_time,all_time,date))
db.commit()
db.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值