第一个暴力猴脚本- 抓取携程某个城市所有起飞、到达航班并保存

本文介绍如何使用暴力猴脚本抓取携程网站上特定城市的出入港航班信息,通过分析页面元素和利用window.onload/onunload事件,实现多页数据的自动抓取并保存为CSV文件。在编写过程中,作者遇到了JavaScript单线程执行的问题,并分享了解决方案和未来改进方向。
摘要由CSDN通过智能技术生成

抓取携程某个城市所有起飞到达航班并保存

代码

https://download.csdn.net/download/liujiayou/11589246

需求

需要大规模接送机的时候,要掌握某个城市所有出入港航班信息。之前用Excel VBS编写了一个,这回试着写第一个暴力猴脚本。

思路

在https://flights.ctrip.com/schedule/可以输入想要查询的城市,以”兴义“为例,最终得到所有兴义出入港航班列表。
https://flights.ctrip.com/schedule/acx-inmap.html(入港)
https://flights.ctrip.com/schedule/acx-outmap.html(出港)
0、在原来菜单右边增加下载,如下图。
在这里插入图片描述

1、点击下载先抓取第一页表格数据。

2、查看第一页表格底部下一页 元素。如果有后续页面,那个这个元素的名称为"schedule_down",如果没有那个这个元素的名称为"schedule_down_disable"。

3、打开一个新窗口,把下一页 元素的链接作为窗口的地址,打开第二页数据。利用window.onload和window.onunload的回调函数抓取第二页数据。

4、查看第二页表格底部下一页 元素,并且不断在此新窗口打开下一页 元素的链接并抓取数据,直到下一页 的名称为"schedule_down_disable"。

5、保存结果到一个CSV文件中,如下图。
在这里插入图片描述

教训

JS是单线程,代码的执行不是顺序的。习惯了按常规顺序执行语句的方法去写,程序很容易进入死循环或者根本不按设想的去执行。

关键点

按常规的写法,新窗口的onload回调函数,在第一次加载完后是正常运行的。如果再给出新地址,刷新窗口后onload就不执行,造成后续页面无法自动刷新和抓取。

关键在于要把window.onload和window.onunload回调函数在onunload(onunload是在刷新网址前发生的)的时候再绑定一下。如下:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值