崩坏:星穹铁道这个游戏最近超火,据说上线没几天就在多个国家下载排行进入前十,鄙人也下载耍了几天也没有感觉到特别的好玩,也没有感觉不好玩,可能是我对游戏不怎么感冒。应掘友要求爬虫一下这个tap论坛,看看别人怎么讲。 1.话不多说,直接开始,还是先分析一下网站结构,网站地址
在网站首页点击论坛点进要爬的游戏,这里以星穹铁道为例,可见数据分为三部分,一是头部,二是基本介绍,三是用户数据,ok,直接看用户数据,先抓包检索一下用户发送的数据
可见数据是在json接口中的,这中都是axjx渲染的,然看看参数,这个参数加载全面向下面多翻一页直接看翻页接口参数都有那些
翻页之后发现参数一共有七个参数五个参数基本不改变,改变的就是那两个用来翻页的惨数据了,这样的话也没有可逆向的了,直接看是模拟请求
可见这个接口里面数据挺多的,估计评论内容接口id也是在这里这个里面,这里就不一一走,直接爬一下用户的发文主题
cookies = {
'web_app_uuid': 'd6d1b580-0f12-4c42-95aa-7788e9da4a4c',
'locale': 'zh_CN',
'apk_download_url_postfix': '/seo-baidu_index',
'tap_theme': 'light',
'XSRF-TOKEN': '23e3xo2wvstnmvhyjwti',
'acw_tc': '2760820516831674381706862ed516135bf192458d506bbc31aa5c92000ee6',
}
headers = {
'authority': 'www.taptap.cn',
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
# 'cookie': 'web_app_uuid=d6d1b580-0f12-4c42-95aa-7788e9da4a4c; locale=zh_CN; apk_download_url_postfix=/seo-baidu_index; tap_theme=light; XSRF-TOKEN=23e3xo2wvstnmvhyjwti; acw_tc=2760820516831674381706862ed516135bf192458d506bbc31aa5c92000ee6',
'pragma': 'no-cache',
'referer': 'https://www.taptap.cn/app/224267/topic',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36',
'x-requested-with': 'XMLHttpRequest',
'x-xsrf-token': '23e3xo2wvstnmvhyjwti',
}
PAGE = 0
for P in range(3):
PAGE *= P
params = {
'from': F'{PAGE}',
'group_id': '311675',
'limit': '10',
'session_id': '994ee010-1f18-41d8-9c9b-02a0b40a196d',
'sort': 'default',
'type': 'feed',
'X-UA': 'V=1&PN=WebApp&LANG=zh_CN&VN_CODE=100&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID=70201a36-b492-4ba4-8877-89460f771ca7&DT=PC&OS=Windows&OSV=10.0.0',
}
response = requests.get('https://www.taptap.cn/webapiv2/feed/v7/by-group', params=params, cookies=cookies,
headers=headers).json()['data']['list']
for res in response:
try:
summary = res['moment']['topic']['summary']
except:
print('没有摘要')
print(summary)