type
status
date
slug
summary
tags
category
icon
password
🗣
大家买机票一般会游走于几大OTA平台,对比价格后选择最低价的平台下单。因为当前国内几大OTA平台提供的服务基本同质化(飞猪F4,携程钻石,同程黑鲸等),价格成了消费者几乎唯一考虑的因素。
所以作为用户,我需要这类产品解决一类需求:在大概确定出发时间和返程时间的情况下,找出附近区域去往全球任意目的最优机票。
  • 例如:我想在XX假期(往返都可前后 n 天)从大湾区(广深香港澳门)出发前往全球目的地,需要给我返回的是【何时、何地、何价的机票清单和偏离日期(请几天)】。
{
条件1: 出发日期、返程日期的组合有 (2n+1) X (2n+1)种
条件2: 出发地 为 4个
条件3: 目的地 为 全球范围
条件4: 返回的是一个类似于排行榜的清单,
条件5: 按“最优”来排,排序逻辑的定义不只是最便宜,而是当前价格处于这条航线历史价格百分位的低位。
条件6: 提供偏离日期的筛选功能,可以选请1天假,2天假,3天假等选项
}
目前最接近可以满足我需求的产品是携程的【特价机票】专区,但是只能多次筛选日期,记录大概数据之后再做结论。
前段时间在微信公众号看到“今晚务必早点睡 ”的开源代码,提供了一个可行思路。简单测试了一下这个工具。
💡
结论:实测当前版本还不能达到一个指令,不是很实用。不如直接客户端搜索来的快。但是如果做一些结果自动化整合,然后修改下逻辑应该是可以达到我上面说的那个产品的效果的
(使用以下内容前需要准备:
  1. 自己用的惯的python IDLE
  1. 提前下载magic、io和seleniumwire等几个库
  1. 下载Microsoft Edge )
 
代码说明
1. 导入模块:代码开始处导入了多个模块,包括网络请求(requests)、数据处理(pandas)、自动化网页操作(selenium)、日期处理(datetime)等。
2. 配置和初始化:定义了一系列变量来设置爬虫的参数,如爬取的城市、日期范围、时间间隔、是否只抓取直飞信息等。
3. 驱动器初始化:init_driver() 函数初始化了一个web驱动器,这里使用的是Edge驱动器。配置了多个浏览器选项,包括隐身模式、禁用GPU等,并且通过读取外部的JavaScript文件(stealth.min.js)来尝试隐藏自动化操作的痕迹。
4. 城市和日期生成:gen_citys()函数生成了一个城市组合列表,用于后续爬取不同城市间的航班。generate_flight_dates() 函数根据设置的参数生成了需要爬取的日期列表。
5.数据抓取逻辑:DataFetcher类定义了一系列方法来抓取和处理数据。包括登录操作、页面元素点击与交互、航班数据请求、数据解析和处理等。
6. 执行流程:在 if __name__ == "__main__": 块中,脚本初始化驱动器,生成城市和日期列表,然后遍历每个城市对和日期,使用 `DataFetcher` 类的实例来执行数据抓取和处理的各个步骤。
7. 结果保存:抓取到的数据被处理和合并为DataFrame,然后保存到CSV文件中。
8. 异常处理和日志:脚本中包含了多处异常处理,以便在抓取过程中遇到问题时记录日志并进行重试。
9. 退出:最后,脚本尝试关闭驱动器以结束爬虫任务。
这个脚本显示了高级别的自动化和数据处理能力,但也需要注意维护和执行此脚本可能需要对selenium库和网页自动化有相当的了解。由于它与实际的网页交互,其持续运行可能需要定期更新以适应目标网站的更改。此外,长时间或大规模的自动化爬虫可能违反某些网站的服务条款。
注意事项
IP限制解决方案:利用页面特性和用户模拟,规避了 IP 限制,提高了爬取稳定性。
数据校验与解析:对获取的数据进行严格的数据质量和完整性校验,包括 gzip 解压缩和 JSON 格式解析。
效果展示
notion image
全代码如下:
 
 
 
游戏行业产业链梳理游戏策划和运营
Loading...