继上次python请求秀动接口,这次我将采用性能最佳的Go语言重构,(tips:因分享了太多人,有人以此向外获利,所以停止分享)
之前采用python异步请求,三次请求购票接口的思路。鉴于秀动app的防护措施愈来愈强,我将采用发挥go语言的协程的最大功效。
(1)思路1:
通过第一个协程请求第一个api,请求完之后,得到的response通过chan管道到协程并发的second api,与之前不同的是第二个api接口的请求有着多个协程的并发任务,一旦第二个协程得到这个任务,立马执行,执行完之后,通过chan2管道传到第三个api接口中的并发任务。这样就避免了I/O堵塞的问题。
但是在第二个接口如何知道第一个接口已经执行完,第二个接口已经执行完返回的response能够在短时间内被利用呢?毫无疑问,设置监控器。这里就用到了chatgpt给我的回复:
chatgpt提供的办法是通过select的方法,进行实时的监控第一个协程是否已经执行完,已经有数据到了管道,因此用到这个方法,我们可以进行实战,其也是可以进行的,但是其会出现资源的损耗,在堵塞过程中,其进行的是条件的筛选。
因此进行第二个思路的思考。
(2)思路二:因为无限个协程并发始终会造成资源消耗和死锁的情况。
因此我们需要控制协程的并发数:
统计协程的个数,最终控制并发量,达到一种程序的效率的最大值,测试得到在协程数控制在20时,我们的系统资源会被完全利用,并且并发的出现的堵塞情况也会减少。
于是基于此,我将采用该方式进行代码的编写。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(1)因为go语言需要包的支撑,按照go语言的规范,第一步数据模型定义
(2)爬虫当然少不了代理
(3)直接请求三大接口
(4)展示数据模型:
因为在我的上一个文章中已经讲了如何去请求接口及相关方法,这里就不再重复,仅提供用go语言实现最大的效率请求接口的方式。
拿最近的《城市客厅》南京场次做测试:
可以看到能够稳定拿下。返回的数据为:
好了,大功告成。
有任何问题可联系我,(以上代码及分析均为本人原创)