爬取携程网机票价格并提供搜索功能

本文介绍如何爬取携程网的飞机航班最低价格数据,通过正则表达式匹配日期和价格,构建键值对。同时,解析城市名称与缩写的对应关系,以实现搜索功能。通过Selenium库打开拼接后的URL,获取实时价格,但要注意数据的快速变化可能导致显示价格与实际不一致。
摘要由CSDN通过智能技术生成

要爬取的数据是最近一段时间的飞机航班的最低价,并提供搜索功能。
利用谷歌浏览器的检查来获取最近一段时间飞机航班最低价json数据的url。
这里写图片描述
打开之后:
这里写图片描述
注意这里我们并不能用json模块将数据转换为json格式。如果转换为json格式会造成:

不能获取价格,日期是变化的,因此如果要用text.get('Prices').get('date')获取价格是不可能的。

那么只能用正则表达式分别匹配日期和价格,构造键值对,日期为键,价格为值:

'''
    L获取日期,L2获取价格。价格在匹配时会把2017以及2018也匹配到,因此删掉
    '''
    L = re.findall(r'[0-9]{4}\-[0-9]{2}\-[0-9]{2}', lowerprice_html)
    L1 = re.findall(r'\d{3,4}', lowerprice_html)
    L2 = []
    min = 500
    '''
    设置一个最小价格
    '''
    for i in range(len(L1)):
        if int(L1[i]) == 2017 or int(L1[i]) == 2018:
            pass
        else:
            L2.append(L1[i])
    '''
    构造键值对
    '''
    for i in range(len(L)):
        InsertDict(D2, L[i], L2[i])
    '''
    爬取的价格与min值进行比较,如果比min的值小,更新min的值
    '''
    for k in D2:
        if int(D2[k]) < int(min):
            min = D2[k]
        else:
            
爬取携程网机票信息,可以按照以下步骤进行: 1. 使用 Python 的 requests 库向携程网发送 HTTP 请求,获取机票页面的 HTML 内容。 2. 使用 BeautifulSoup 库对 HTML 内容进行解析,提取出机票信息所在的标签。 3. 解析标签,获取机票的相关信息,如出发地、目的地、航班号、价格、起飞时间、到达时间等。 4. 将获取的机票信息存储到数据库或文件中。 下面是一个简单的示例代码: ```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'} # 构造请求参数信息 params = { 'depCity': '北京', 'arrCity': '上海', 'depDate': '2022-01-01', } # 发送 HTTP 请求,获取机票页面的 HTML 内容 response = requests.get('https://flights.ctrip.com/domestic/search/flight', headers=headers, params=params) html_content = response.text # 使用 BeautifulSoup 解析 HTML 内容,提取机票信息 soup = BeautifulSoup(html_content, 'html.parser') flight_list = soup.select('.flight-item') # 遍历机票列表,输出机票信息 for flight in flight_list: flight_no = flight.select_one('.flight_logo').text.strip() # 航班号 dep_time = flight.select_one('.time').text.strip() # 起飞时间 arr_time = flight.select('.time')[-1].text.strip() # 到达时间 price = flight.select_one('.base_price02').text.strip() # 价格 print(flight_no, dep_time, arr_time, price) ``` 需要注意的是,携程网有反爬机制,可能会对频繁的请求进行限制或者要求验证码验证,因此在实际应用中需要添加相应的反反爬措施。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值