python 12306 查询
时间: 2024-09-20 11:13:43 浏览: 41
在Python中,通过第三方库来查询12306火车票信息是非常常见的需求,因为官方提供的API并不直接开放给公众。最常用的库是`pyquery`和`lxml`,它们可以配合`requests`库一起使用,模拟浏览器访问12306网站并抓取数据。
以下是一个简单的示例,展示如何使用`lxml`和`BeautifulSoup`库来获取车次信息:
```python
import requests
from lxml import etree
def query_train_info(search_term):
url = "https://kyfw.12306.cn/otn/leftTicket/init"
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'
}
params = {
'leftTicketDTO.train_date': search_term,
'leftTicketDTO.from_station': '出发站',
'leftTicketDTO.to_station': '到达站',
'purpose_codes': 'ADULT'
}
response = requests.get(url, headers=headers, params=params)
html = response.text
soup = etree.HTML(html)
# 提取你需要的信息(如车次、价格等),这需要根据HTML结构定位到相应的标签
train_list = soup.xpath('//div[@class="result"]') # 这里只是一个基本的选择器,实际要根据官网变化调整
for train in train_list:
# 解析每个列车的信息...
pass
# 使用方法
search_term = '2023-03-01 北京->上海'
query_train_info(search_term)
```
请注意,这只是一个基础示例,实际上12306有反爬虫机制,频繁请求可能会导致IP被封禁。在实际操作中,你可能需要设置延时、使用代理等技巧,并遵守相关法律法规。
阅读全文