用python爬取12306网页
时间: 2023-10-11 11:14:29 浏览: 179
以下是一个示例代码,用于爬取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中的 requests、BeautifulSoup 和 re 库来实现。首先,调用 requests 库中的 get() 方法向12306网站发送请求,获取到相关的车次信息页面内容。然后,使用 BeautifulSoup 库解析页面内容,并使用正则表达式 re 匹配需要的车次信息。最后,可以将获取到的信息以 json、csv 或 txt 格式等保存到本地或者数据库中供使用。
阅读全文