使用Charles工具抓取TapTap游戏排行榜-Charles实战练习

鳄鱼君

发表文章数:642

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Python » 使用Charles工具抓取TapTap游戏排行榜-Charles实战练习

这篇文章就来介绍一下Charles工具如何抓取安卓APP的数据包,我们以TapTap为例进行演示,那么我们需要做好准备工作,如果不知道准备工作是什么的话,可参考:Charles抓包工具的安装和使用详解

使用手机配置代理的时候,记着端口是8888,不是8080,不然在电脑端没有反应。

需要注意的是,抓取手机端的TapTap数据包,没有办法来教你如何找到存储数据的url,这个需要你自行摸索,用好网址过滤Filter,缩小范围,不然数据很多,你不知道看哪一个,比方说抓taptap的包,就找包含taptap的url,仅做参考。我们要抓取游戏的排行榜,如下图:

使用Charles工具抓取TapTap游戏排行榜-Charles实战练习

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

使用Charles工具抓取TapTap游戏排行榜-Charles实战练习

按照图片上的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)

以上代码只是获取了一部分,我们在接着往下滑动手机屏幕,会看到:

使用Charles工具抓取TapTap游戏排行榜-Charles实战练习

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

使用Charles工具抓取TapTap游戏排行榜-Charles实战练习

观察发现可以变的是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 –

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《使用Charles工具抓取TapTap游戏排行榜-Charles实战练习》 发布于2020-03-28

分享到:
赞(3) 赏杯咖啡

评论 抢沙发

1 + 6 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册