pyqt5+mysql+多线程爬虫实现 python 携程机票爬虫 数据可视化

数据来源与获取方法

数据来源

携程机票查询https://flights.ctrip.com/online/channel/domestic

网页分析

我们的目的是要爬取携程网中机票的价格,航班的起飞时间,降落时间,目的地,出发地,所乘做机型名称,航班号信息
第一步
首先通过浏览器开发者工具记录网络请求,并通过全局搜索得到起飞时间数据的请求头返回地址
图1 开发者工具获取响应数据的请求和返回来源

其中请求头中的sign和transactionid为变化的状态,因此我们的方向就是分析sign和transactionid的变化规律并归纳出公式以便爬虫请求

图2 请求头信息

我们进行逆向回推看看是哪里的设置改变了这两个参数,发现https://flights.ctrip.com/international/search/api/flightlist//round-tna0-cgq0?_=1&depdate=2022-12-01_2022-12-04&cabin=Y_S_C_F&containstax=1&v=0.18291690129031823
中的相应里有transactionid
图3 transactionid最初来源

从该地址中我们推测tna对应的是济南的三字码,cgq为长春的三字码,depdate=XXXX-XX-XX_XXXX-XX-XX为出发时间和返回时间,v=0.18291690129031823为时间戳刷新缓存(一般情况可以直接忽略)
接着我们查找sign的值,查到到最早出现sign的请求。但是没有出现关于sign的响应,因此初步断定sign的值是Js动态形成的
图 4 最早出现sign的请求

使用堆栈跟踪,在js代码中搜索sign,定位出现sign的位置,其中n的值赋给了sign,所以n的值的来源就是sign值的来源,n = sessionStorage.getItem(i)) || (n = (new a.a).update®.digest(‘hex’), sessionStorage.setItem(i,n)
其中sessionStorage为本地存储的键值对,get方法取键i为真,那么n为新new了一个对象把r进行md5并且以键值对(i,n)设置回sessionStorage
其中r是e.transactionID + t
那么t是
var n = e.departureCityCode,
r = e.arrivalCityCode,
a = e.departureDate;
t += n + r + a
departureCityCode是出发城市的三字码,arrivalCityCode是到达城市的三字码,departureDate是出发的日期
图5 关于sign的生成

所以

实现效果

在这里插入图片描述
请添加图片描述

请添加图片描述
请添加图片描述

完整代码与说明文档

面包多:https://mbd.pub/o/bread/ZJabm5xp

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫可以通过使用requests库来实现网页的抓取,并通过BeautifulSoup库来解析网页内容。在参考的CSDN博客文章《python爬虫租房信息在地图上显示》中,作者详细介绍了如何使用Python爬虫从58同城网站上获取租房信息,并将这些信息在地图上进行可视化展示。 在另一个项目中,作者使用了多线程爬取58同城二手商品信息,并使用了Jupyter来将数据进行可视化展示。在主函数中,作者首先获取了58同城各个频道的链接,然后使用线程池来并发地抓取数据并存储到MongoDB数据库中。 另外,作者还在CSDN阅读了关于Python爬虫的文章,并学习了秦璐老师《七周成为数据分析师》系列的Python内容,主要是关于pandas库的使用。在可视化方面,作者使用了Power BI进行绘制,后续还有改进和完善的计划。 综上所述,Python爬虫可以通过抓取58同城网站的数据,并通过可视化工具进行数据展示,例如在地图上显示租房信息或使用Power BI进行数据可视化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python爬取58同城广州房源+可视化分析](https://blog.csdn.net/R3eE9y2OeFcU40/article/details/80423922)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [python:爬取58同城全部二手商品信息(转转网)](https://blog.csdn.net/DR_eamMer/article/details/79428382)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值