用python爬取12306网页
时间: 2023-10-11 09:14:29 浏览: 57
以下是一个示例代码,用于爬取12306网站的火车票信息:
```python
import requests
from bs4 import BeautifulSoup
# 设置请求头,模拟浏览器访问
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'
}
# 构造请求url
url = 'https://kyfw.12306.cn/otn/leftTicket/init'
# 带上请求头发送请求
response = requests.get(url, headers=headers)
# 使用BeautifulSoup解析页面
soup = BeautifulSoup(response.text, 'html.parser')
# 找到车站名称下拉框的所有选项
station_list = soup.select('#fromStation option')
# 打印所有车站的名称和对应的值
for station in station_list:
print(station.text, station['value'])
```
这个示例代码只是演示了如何获取车站名称下拉框的所有选项。如果你想获取火车票信息,需要构造带有查询参数的url,并发送请求获取相应的页面。具体可以参考12306网站的API文档。
相关问题
python爬取12306
以下是使用Python爬取12306网站的步骤和注意事项:
1. 首先需要安装requests和BeautifulSoup库,可以使用pip命令进行安装。
2. 使用requests库发送HTTP请求,获取12306网站的HTML源代码。
3. 使用BeautifulSoup库解析HTML源代码,提取需要的信息。
4. 由于12306网站有反爬机制,需要使用一些反反爬技术,例如设置请求头、使用代理IP等。
5. 可以使用selenium库模拟浏览器行为,实现自动化爬取。
6. 注意不要频繁发送请求,以免被封IP。
以下是一个简单的示例代码,可以爬取12306网站的车票信息:
```python
import requests
from bs4 import BeautifulSoup
# 设置请求头
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'}
# 发送HTTP请求,获取HTML源代码
url = 'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2022-01-01&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=SHH&purpose_codes=ADULT'
response = requests.get(url, headers=headers)
html = response.text
# 解析HTML源代码,提取车票信息
soup = BeautifulSoup(html, 'html.parser')
tickets = soup.select('tr[data-trace]')
for ticket in tickets:
train_no = ticket['data-trainno']
from_station = ticket['data-fromstation']
to_station = ticket['data-tostation']
start_time = ticket.select_one('.start-t')['title']
end_time = ticket.select_one('.end-t')['title']
duration = ticket.select_one('.ls-duration').text
price = ticket.select_one('.ticket-price').text
print(train_no, from_station, to_station, start_time, end_time, duration, price)
```
python爬取12306火车票信息
以下是使用Python爬取12306火车票信息的示例代码:
```python
import requests
# 获取所有城市英文代码
url = "https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9053"
print("正在获取数据。")
# 发送请求,获取返回的数据
res = requests.get(url)
data = str(res.content, encoding="utf8")
print(data)
```
这段代码使用requests库发送GET请求,获取12306网站上的城市英文代码数据。首先,我们需要指定URL链接,然后发送请求并获取响应的数据。最后,将获取到的数据转换为字符串并打印出来。