这篇文章就来介绍一下Charles工具如何抓取安卓APP的数据包,我们以TapTap为例进行演示,那么我们需要做好准备工作,如果不知道准备工作是什么的话,可参考:Charles抓包工具的安装和使用详解
使用手机配置代理的时候,记着端口是8888,不是8080,不然在电脑端没有反应。
需要注意的是,抓取手机端的TapTap数据包,没有办法来教你如何找到存储数据的url,这个需要你自行摸索,用好网址过滤Filter,缩小范围,不然数据很多,你不知道看哪一个,比方说抓taptap的包,就找包含taptap的url,仅做参考。我们要抓取游戏的排行榜,如下图:

我们通过下面的图片可以看到,所有的排行榜信息都在这里,是一个json数据,在Charles里面我们看不到汉字,都是json字符串,我们使用Python去请求url,使用json解析文本,提取相关内容,非常的简单!

按照图片上的url分析,就是数据的来源,我们先写一下代码:
import requests
import json
#在Charles工具中发现可以的url地址
url='https://api.taptapdada.com/app-top/v1/hits?limit=10&X-UA=V%3D1%26PN%3DTapTap%26VN_CODE%3D608%26LOC%3DCN%26LANG%3Dzh_CN%26CH%3Dguangdiantong2-yyb%26UID%3D5adfa659-d27e-4071-87aa-32bcf4ab7168&from=10&type_name=android_hot_cn'
headers={
'User-Agent':'okhttp/3.10.0'
}
response=requests.get(url,headers=headers)
html=json.loads(response.text)
#提取游戏标题、标签、分数、图片、大小
for i in html['data']['list']:
item = {}
item['title']=i['title']
item['tags']=[a['value'] for a in i['tags'] ]
item['score']=i['stat']['rating']['score']
item['img']=i['icon']['original_url']
item['size']=i['icon']['original_size']
print(item)
以上代码只是获取了一部分,我们在接着往下滑动手机屏幕,会看到:

不断的有数据生成,我们只需要构造这个url请求就可以了,那么我们需要向headers中添加参数:

观察发现可以变的是from参数,我们简单设置一下,可以循环的构造url去抓取,代码参考:
import requests
import json
#在Charles工具中发现可以的url地址
url='https://api.taptapdada.com/app-top/v1/hits?'
headers={
'User-Agent':'okhttp/3.10.0',
}
for b in range(120):
data={
'limit':10,
'X-UA': 'V=1&PN=TapTap&VN_CODE=608&LOC=CN&LANG=zh_CN&CH=guangdiantong2-yyb&UID=5adfa659-d27e-4071-87aa-32bcf4ab7168',
'from': b*10,
'type_name':'android_hot_cn'
}
#把参数放到data字典中,传给params,requests会自动拼接url,带入data的参数
response=requests.get(url,headers=headers,params=data)
#print(response.url) #可以打印url,看一下
html=json.loads(response.text)
#提取游戏标题、标签、分数、图片、大小
try:
for i in html['data']['list']:
item = {}
item['title']=i['title']
item['tags']=[a['value'] for a in i['tags'] ]
item['score']=i['stat']['rating']['score']
item['img']=i['icon']['original_url']
item['size']=i['icon']['original_size']
print(item)
except KeyError as e:
print(e)
那么到这里就可以简单的实现TapTap排行榜数据的抓取,我们不再往下进行演示,自己在尝试摸索摸索。接着你可以考虑一下详情页的数据,和其他排行榜,观察参数发现,排行榜和参数type_name有关,不同的排行榜,这个值不同,可以替换参数对不同的排行榜抓取,然后在抓取每个游戏的详情页,加油吧!
– END –
声明:1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!