西南航空公司的简易刮刀

scrapeswa的Python项目详细描述


西南航空公司的简易刮刀

西南航空没有提供直接的API来查询他们的票价。其他航班票价API存在,但大多数是付费围墙。这个简单的scraper只是为西南航空的web用户界面生成一个url,并将其内容作为信息片段。当然,这样做是相当缓慢的(5-10每刮取决于你的机器),但对于大多数人谁只是有兴趣自动化一些简单的价格检查,几次一天就足够了。我没有注意到他们的网站上有任何反刮或验证码,所以我们可以永远刮在理论上。

玩得开心!

-医生

要求

Python3

chrome网络驱动程序-在这里获取http://chromedriver.chromium.org/downloads

请参见requirements.txt以了解所使用的python包,如果使用pip安装,则无需担心这些问题

安装

pip install scrapeswa

示例用法

导入

from datetime import datetime
import scrapeswa as sswa

往返(目标,推荐)

>>> outbound, return = sswa.getRoundTrip('LAX','SFO',datetime(2019,5,5),datetime(2019,5,10),returnObject=True)

返回两个出站和返回航班对象的列表

>>> outbound
([<scrapeswa.scrapeswa.SWAFlight object at 0x102f35fd0>, <scrapeswa.scrapeswa.SWAFlight object at 0x102f3d0f0>, ... <scrapeswa.scrapeswa.SWAFlight object at 0x102f3de10>])

访问飞行对象中的信息

>>> outbound[0].__dict__
{'flight': '2994', 'src': 'LAX', 'dst': 'SFO', 'economy': <scrapeswa.scrapeswa.Fare object at 0x102bac198>, 'anytime': <scrapeswa.scrapeswa.Fare object at 0x102bac208>, 'business': <scrapeswa.scrapeswa.Fare object at 0x102bac1d0>, 'leave': datetime.datetime(2019, 5, 5, 6, 45), 'arrive': datetime.datetime(2019, 5, 5, 8, 10)}

outbound[0].economy
<scrapeswa.scrapeswa.Fare object at 0x102bac198>

outbound[0].economy.__dict__
{'flightClass': 'Economy', 'fare': 59, 'earn': 250, 'pts': 3242, 'ppd': 54.94915254237288, 'epd': 4.237288135593221}

打印可读字符串

>>> print(outbound[0])
Flight:2994 Leaving LAX Sun 06:45 AM Arriving SFO Sun 08:10 AM
Economy costs $59 (3242pts) earning 250 pts

票价计算

>>> sumFare = outbound[0] + outbound[1]
>>> sumFare
<scrapeswa.scrapeswa.Fare object at 0x102f35f60>
>>> print(sumFare)
Economy costs $134 (7646pts) earning 589 pts

往返(字典)

>>> outbound, return = sswa.getRoundTrip('LAX','SFO',datetime(2019,5,5),datetime(2019,5,10))

返回两个出站和返回航班信息字典列表

([{'Flight': '2994', 'Leave': datetime.datetime(2019, 5, 5, 6, 45), 'Arrive': datetime.datetime(2019, 5, 5, 8, 10), 'src': 'LAX', 'dst': 'SFO', 'bestAval': 'Economy', 'Business': {'fare': 253, 'earn': 2665, 'pts': 17319, 'ppd': 68.45, 'epd': 10.53}, 'Anytime': {'fare': 225, 'earn': 1960, 'pts': 15287, 'ppd': 67.94, 'epd': 8.71}, 'Economy': {'fare': 59, 'earn': 250, 'pts': 3242, 'ppd': 54.94, 'epd': 4.23}},

...

{'Flight': '1077', 'Leave': datetime.datetime(2019, 5, 10, 21, 25), 'Arrive': datetime.datetime(2019, 5, 10, 22, 55), 'src': 'SFO', 'dst': 'LAX', 'bestAval': 'Economy', 'Business': {'fare': 253, 'earn': 2665, 'pts': 17319, 'ppd': 68.45, 'epd': 10.53}, 'Anytime': {'fare': 225, 'earn': 1960, 'pts': 15287, 'ppd': 67.94, 'epd': 8.71}, 'Economy': {'fare': 75, 'earn': 339, 'pts': 4404, 'ppd': 58.72, 'epd': 4.52}}])

非PIP实用程序

如果您签出此存储库,您将能够使用基于此工具构建的更多实用程序。

检查软件py

这是一个我建立的工具,用来找出谁应该拜访我和我女朋友之间的人。如果你是在一个长距离的关系,这个工具真的可以帮助你。我还在努力完善这个脚本的批刮能力。下一步是在crontab中将其设置为每天运行,并将每天的结果填充到数据库中,然后构建一个数据可视化工具,以便更好地了解机票定价趋势和最佳行动方案,以查看我的爱人。

型号.py

一个sqlalchemy orm,用于帮助组织所刮取的数据

card.html

从完全加载的页面中提取的单张飞行卡的片段。帮助您了解刮刀是如何制造的

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Cassandra DB的javascript查询结果   java定时器任务调度   java在TLS上实现LDAP   为什么在浏览器中滚动会使java小程序闪烁?   未使用轮询器和serviceactivator提取java pubsub消息   java风暴多线程问题   java计算平均成绩   java将字符串添加到另一个类的数组列表中   文件Java路径如何转换为例如InputStream   java更改JComboBox的字体颜色   java inthttp:具有可轮询请求通道的inboundgateway   使用继承在Java中运行swing Base和扩展windows   java ivysettings。xml:添加本地maven路径   java如何将参数自定义视图传递给activity类   java延迟加载无法在Hibernate中使用一对一映射   当文件以“file:/”开头时,Java无法识别该文件   需要java正则表达式帮助,使用反斜杠   片段中的java GWT参数