你的五一机票抢到了吗?先来看看如何用Python买特惠票的吧

前言

五一五天小长假,可谓是一票难求哇,朋友们更是调侃,哪都别想去,休五天堵两天,哎,就是玩儿。其实想要出去玩的话,比起五一这个调一天补一天、到哪哪堵的小长假,周末周边游不香吗,人少机票还不贵,除了时间稍微短一点,但咱玩得舒心,起码不用看人头呀。那么今天我们就来看看如何利用Python买到最便宜的机票吧。

【----帮助Python学习,以下所有学习资料文末免费领!----】

在这里插入图片描述

一、为什么可以用Python查询到最便宜的机票

Python查询到最便宜机票主要依靠的是网络爬虫获取数据,该爬虫对特定目的地运行并执行带有浮动日期(首选日期前后最多三天)的航班价格搜索。它会将结果保存为excel文件并发送一封包含快速统计信息的电子邮件。这个爬虫最主要的作用就是帮我们找到最优惠的价格。

二、查询办法

在你导入所需的库,并打开一个 Chrome 页面之后,我们需要定义一些之后会在循环中调用的函数。主要的程序结构为:

1)一个函数负责启动爬虫,指出我们需要查找的城市和日期

2)这个函数获取到最初的搜索结果,按照“最优”方式排序航班列表,然后点击“载入更多”

3)另外一个函数爬取整个页面,返回一个 dataframe 数据表对象

4)重复上面的步骤 2 和 3,用“最便宜”和“最快速”的方式排序列表

5)简单地对价格进行统计(最低价、平均价),然后形成简要汇总表,发送到指定邮箱,并把对应的 dataframe 保存成 Excel 表格文件,放在指定目录中

6)每隔 X 小时就重复一遍上面的每一步

不一定要用Chrome浏览器,火狐也可以,然后只要等下载完,往文件夹里一丢就完事了。

三、代码脚本

from time import sleep, strftime
from random import randint
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import smtplib
from email.mime.multipart import MIMEMultipart 

上面这些就是我们所用脚本所需的代码库啦。randint() 让爬虫在每次搜索之间暂停上随机的几秒钟。

driver = webdriver.Chrome(executable_path=chromedriver_path)
sleep(2)

现在让我们打开一个购买机票网站,选择出你的出发地、目的地以及出发日期。

在这里插入图片描述

接下来,我们点击确定按钮,把地址栏里的链接地址复制下来。这个地址长得应该类似下面代码中的那个字符串。把这个字符串赋值给 kayak 变量,并用 webdriver 的 get 方法来访问这个地址。

kayak = “https://www.kayak.com/flights/LTS-SIN/2021-04-26-flexible/2021-04-29-flexible?sort=bestflight_a” driver.get(kayak) sleep(3)

这个时候你的搜索结果应该出现了。如果在几分钟内连续执行这个命令两三次,网站就会弹出一个验证码,阻止后续的访问。 这种情况下,你可以直接手动完成验证,并继续测试你需要搜索的内容,直到下一个验证码跳出来为止。

四、XPATH

目前,我们打开了一个窗口,读取了一个网页,为了能确切地获取到价格和其他信息,我们利用Xpath来获取信息。

cheap_results = '//a[@data-code = "price"]'
driver.find_element_by_xpath(cheap_results).click()

那么,让我们用 Python 来选中最便宜的搜索结果。上面的代码中,那个字符串就是 XPath 选择器。你可以在网页中任意元素上点击右键,选择 检查,当开发者工具弹出时,你就可以在窗口中看到你选中的元素的代码了。

在这里插入图片描述

在完成了上面的这些步骤之后,搜索结果应该已经显示出来了。我们把所有搜索字符都提出来,然后我们 把包含这个类的元素都抓下来,利用循环把他们装进列表里。

基本上,它的工作方式就是指向你想要的某个对象(比如这里的 resultWrapper),用某种方式(XPath 选择器)把文字都抓下来,然后把内容都放在某个方便读取的对象(先是 flight_containers,接着是 flights_list )中。

这段的代码类似这样:

xp_results_table = '//*[@class = "resultWrapper"]'
flight_containers = driver.find_elements_by_xpath(xp_results_table)
flights_list = [flight.text for flight in flight_containers]# 列出前 3 个结果
flights_list[0:3]

运行结果如下:

在这里插入图片描述

在写完了上面这些代码之后,我们需要把这些函数都组装起来,让它们开始工作。

如果你已经看到了这里,恭喜!你已经学完了今天这个短短的教程。

Python入门教程

如果你现在还是不会Python也没关系,下面我会给大家免费分享一份Python全套学习资料, 包含视频、源码、课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,可以和我一起来学习交
流。

① Python所有方向的学习路线图,清楚各个方向要学什么东西

② 600多节Python课程视频,涵盖必备基础、爬虫和数据分析

③ 100多个Python实战案例,学习不再是只会理论

④ 华为出品独家Python漫画教程,手机也能学习

⑤ 历年互联网企业Python面试真题,复习时非常方便

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉100道Python练习题👈

检查学习结果。

👉面试刷题👈

在这里插入图片描述

资料领取

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取

在这里插入图片描述

好文推荐

了解python的前景:https://blog.csdn.net/weixin_49891576/article/details/127187029

了解python的兼职:https://blog.csdn.net/weixin_49891576/article/details/127125308

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部