西南航空公司的简易刮刀

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第三方库


热门话题
java使用Eclipse Helios for Web项目   java指定行。作为编译器设置的分隔符?   osm映射中带有osmdroid的java标记   java Android ClassNotFoundException在路径:DexPathList上未找到类   java从j2me调用GWT方法   更新到java 8后的aspectj问题   如何仅从根元素java,com提取文本内容。滴虫软件。是的。html   安卓公司。谷歌。火基。数据库DatabaseException:未能转换java类型的值。将字符串改为长字符串   从java中的方法返回arraylist变量   java如果将引用重新分配给同步块内的锁对象,会是什么?   java下载。使用spring mvc的资源文件中的xlsx文件   java Eclipse提供了什么工具来运行Eclipse中未包含的程序?   spring boot Java泛型如何读取传递给泛型方法的类型上的字段或调用方法   Javacard中的javaecdsa签名