
a7079ed8cb17fa0f204b390b8bb595de.png (280.72 KB, 下载次数: 2)
下载附件
图片
2025-9-5 19:12 上传
[Python] 纯文本查看 复制代码import re
import json
import requests
def get_room_id(live_url):
"""从直播间链接获取roomID"""
try:
res = requests.get(
url=live_url,
headers={
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36"
},
cookies={
"# 填写cookie"
},
)
res.raise_for_status()
match_list = re.findall(r'"roomId\\":\\"(\d+)\\",', res.text)
if not match_list:
raise ValueError("无法从页面中提取roomID")
return match_list[0]
except Exception as e:
raise Exception(f"获取roomID失败: {e}")
def get_audience_ranklist(room_id):
"""获取直播间观众排行榜"""
headers = {
"accept": "application/json, text/plain, */*",
"accept-language": "zh-CN,zh;q=0.9",
"priority": "u=1, i",
"referer": f"https://live.douyin.com/{room_id}",
"sec-ch-ua": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"Google Chrome\";v=\"140\"",
"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/140.0.0.0 Safari/537.36"
}
cookies = {
"# 填写cookie"
}
url = "https://live.douyin.com/webcast/ranklist/audience/"
params = {
"aid": "6383",
"app_name": "douyin_web",
"live_id": "1",
"device_platform": "web",
"language": "zh-CN",
"enter_from": "web_live",
"cookie_enabled": "true",
"screen_width": "1920",
"screen_height": "1080",
"browser_language": "zh-CN",
"browser_platform": "Win32",
"browser_name": "Chrome",
"browser_version": "140.0.0.0",
"webcast_sdk_version": "2450",
"room_id": room_id,
"ignoreToast": "true",
"rank_type": "30",
"msToken": "rkjDOYMIQv3b96UcVsymUmIRfpNCtGz4gN7tCmGFVBfoEt_HS6J4-3xLPjE5z0Yo5VQ_LJErVCvbXU587q4sEUULdPf9j1tF4PJc2jLeEsZV7QqUCa3CyqbLzpUqjBJE-guvmqSYUGWRv83Qvpo2pwApp1264SlMHKuotU9Bg7Ur",
"a_bogus": "df4RgwWJEdWbKVMtYcnfSV2UTgVlNPSymli2Sc/uexuKO70YkRP4Ert-joLWU32hRSBTiq1H3fzMbDVcsdXz1M9komkvuNiR5tVCVU8L2qqDTMvMLNbYCLYFzwMxUcsqlAVGiAgI0Ueq6VnAwrQu/QAry/uKQRSBM1OfkMucE9Bh1MLAL1nHPBGkEXiPUb/6"
}
try:
response = requests.get(url, headers=headers, cookies=cookies, params=params)
response.raise_for_status()
data = response.json()
# 提取用户信息
users = []
for rank in data.get('data', {}).get('ranks', []):
user_info = rank.get('user', {})
users.append({
'用户ID': user_info.get('id', ''),
'昵称': user_info.get('nickname', ''),
'性别': user_info.get('gender', 0), # 1=男, 2=女, 0=未知
'显示ID': user_info.get('display_id', ''),
'等级': user_info.get('pay_grade', {}).get('level', 0),
'Sec UID': user_info.get('sec_uid', ''),
'粉丝勋章等级': user_info.get('pay_grade', {}).get('level', 0),
'粉丝团等级': user_info.get('fans_club', {}).get('data', {}).get('level', 0)
})
# 格式化输出
print("用户信息汇总:")
print("-" * 120)
print(
f"{'排名':
​​注意事项:​​