前面我们介绍了APP爬虫环境的搭建和mitmproxy工具的简单使用。这次我们就来一个简单的APP爬虫,试试简单实用的APP爬虫,看看喜马拉雅上的主播到底赚了多少钱。APP爬虫一般分为两种方式。一种是直接分析破解应用的API,模拟API访问获取数据。另一种是设置代理,使用自动化操作,使用mitmproxy抓取数据。分析API接口是最快的爬取方式,不过分初级和高级。主要是针对一些没有严格加密的应用。有些接口可以通过抓包软件抓包分析。高级的需要解压APP。破解,阅读源码,分析接口。自动运行方式比较慢,但是比较简单。只要设置了自动操作工具,数据的抓取和处理就非常方便。目前了解三种自动化工具:appium、Airtest、autoJS。对于这三种方法,我们后面会有文章介绍。今天我们就先用初级的方法抓取喜马拉雅APP的主播榜单,看看这些主播到底有多丰富。你能想象他们的幸福吗?下面是打开的。配置手机抓包环境抓包工具之前介绍过三种:Fiddler、Charles、mitmproxy,直接安装简单配置即可抓包,这里不再赘述。网上有很多这样的配置帖子,下面我贴出两张,大家自行查看。如果有工具使用需求,请到哔哩哔哩搜索相关视频,观看一个小时后基本可以使用。Charles手机抓包配置Fiddler手机抓包配置操作抓包打开模拟器和抓包软件打开喜马拉雅APP。具体操作如下。找到主播榜单后,默认是每小时榜单。小时榜第一名:夏春瑶。切换到Charles,Ctrl+F打开搜索框,在底部打开搜索到的内容,双击定位到对应的请求,查看响应数据,查看这个请求可以确认是小时的请求地址列表。按照上面的方法,我们用同样的方法查看每日榜单和每周榜单,得到对应的接口url,下面是对应的接口:每小时榜单:http://114.80.139.232/gift-ra...每日榜单榜单:http://114.80.170.77/gift-ran...每周榜单:http://114.80.139.232/gift-ra...PS:我在广电网下抓取的界面和下面的不一样电信网络,主要是因为接口里的IP地址不一样,不知道是不是IP变了,还是跟网络有关系,所以如果有的同学用我的不能正常抓取数据代码请抓包接口分析已经拿到接口了,第一步我们要试一下接口是否可以正常抓包。importrequestss=requests.session()r=s.get(url)print(r.text)总的来说肯定没那么简单。您必须向标头或cookie添加数据。OK,那么我们如何确定需要添加哪些数据呢?Fiddler和Charles都有重复发送请求的功能。在Charles中选中要测试的请求,右键Compose,下面会多出一个请求,前面有笔标,然后在上面请求的headers中添加数据到下面请求的headers中,点击底部的执行按钮。如果请求成功,下面会出现状态为200的请求。如果请求不成功,则说明该请求必须依赖于上述请求之一。成功后,用“笔”返回请求,删除headers中的部分内容,再次尝试发送请求,看请求是否成功。反复尝试,直到剩下最少的数据量,请求才能成功。这将确定需要将哪些数据添加到标头或cookie中。通过上面的调试,我们发现只需要在headers中添加host数据即可。每小时榜单我们定时抓取每小时58分钟,每日榜单每天23:58抓取,周榜单每周日23:00抓取。:58分抢一次,代码已经上传到我的GitHub,数据存储在MongoDB数据库中。在本文中,我们抓取了一些数据:榜单数据、收藏值、直播状态、主播名排名、用户UID、房间ID、直播间数据、粉丝群名称、粉丝数、直播开始时间、直播结束时间,群ID,在线人数,参与人数,用户头像,以上数据是按照时间段保存的,这样抓取一段时间后,可以把数据拿出来分析,这个我们会下次再分析。后面抓取的数据我也会导出上传到GitHub。我对数据分析不是很熟悉,所以只能做一些简单的分析。想要获取码,请回复公众号:ximalaya获取码地址。如果觉得我的文章还可以,可以关注我的微信公众号查看更多实战文章:Python爬虫实战之路也可以扫描下方二维码加我微信公众号如果觉得我的文章也可以关注我的微信公众号查看更多实战文章:Python爬虫实战之路也可以扫描下方二维码加我微信公众号
