配置采集手机App数据和采集网页数据的原理相同,需要先通过网络抓包,拦截App和服务器通信的数据包,然后找到传输的接口和参数,最后使用requests包采集数据。这中间最烦琐的环节是拦截App和服务器通信的数据包,需要使用安卓模拟器及抓包工具,并将安卓模拟器和抓包工具连接起来;也可以直接使用安卓手机代替安卓模拟器,但建议使用闲置手机(不要安装多余的应用),如果使用自己常用的手机,则数据交互频繁容易混淆我们的观察。
App数据抓包启动抓包的手机和电脑上的Fiddle,在手机中打开要抓包的app,是在手机中打开的App中的页面。
通过Fiddle可以查看到App传输过程的所有数据包,找到当前排行榜的数据包。理论上,当前数据包应该从捕获到的列表的底部开始向上寻找,这是最快找到数据包的路径。另外,通过数据类型(JSON)、主机(Host)、内容(Body)的大小也可以快速判断目标数据包。如下图所示:
抓包数据已经获取到了目标URL,先测试是否可以在Python中获取数据,直接使用requests.get访问目标URL,代码如下:
import requests
print(requests.get('https://######.com/api/v1/game/system/pageSetting').text)
通过观察发现,目标URL的参数中只有一个page参数是可以控制数据变化的参数,因此先测试是否通过改变page参数就可以让服务器返回不同页码的数据,代码如下:
for i in range(1,3):
headers = {'Identify':'69449118'}
url ='https://**************.com/api/v1/game/pet/illustration?page={}&size=4'.format(i)
data = requests.get(url,headers=headers)
print(data.text)
网友评论