写一个python12306火车票的爬取
时间: 2024-12-23 22:16:36 浏览: 14
Python爬取12306火车票信息通常会涉及到网络抓包、HTML解析以及模拟登录等技术。这里提供一个简化的步骤示例:
```python
# 导入必要的库
import requests
from bs4 import BeautifulSoup
import json
# 创建Session对象,模拟浏览器访问
session = requests.Session()
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
# 登录函数(实际过程需要账号密码)
def login(username, password):
login_url = "https://kyfw.12306.cn/otn/login/init"
session.get(login_url, headers=headers)
# 实现登录逻辑,替换为实际的POST请求和验证码处理
# ...
login('your_username', 'your_password')
# 爬取车次信息
train_info_url = "https://kyfw.12306.cn/otn/leftTicket/init"
response = session.get(train_info_url, headers=headers)
# 解析HTML获取火车信息
soup = BeautifulSoup(response.text, 'html.parser')
trains = soup.find_all('tbody', class_='resultlist') # 查找火车列表部分
for train in trains:
for td in train.find_all('td'):
# 获取出发地、目的地、时间、价格等信息
origin = td.find('span', class_='from').text
destination = td.find('span', class_='to').text
departure_time = td.find('span', class_='time').text
price = td.find('em', class_='money').text
print(f"出发站:{origin}, 目的地:{destination}, 出发时间:{departure_time}, 价格:{price}")
# ... 进行更复杂的数据提取和存储操作
阅读全文