三角洲辅助卡盟新版上线,应有尽有
当前位置:首页 > 游戏攻略> 正文

《逆水寒》最幸福的人介绍

发布时间:06/21 10:55:35
用Python抓包+可视化筛选《逆水寒》NPC角色的幸福度

前置准备

1. 环境配置

本次使用Python 3.9.x入门友好环境,按以下步骤安装:

  • 访问官网下载Python 3.9.13安装包:https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe(Windows 64位)
  • 安装时务必勾选Add Python 3.9 to PATH,点击“Install Now”默认安装
  • 打开Windows终端(Win+R输入cmd回车),输入python --versionpip --version,显示版本号即为成功

2. 依赖库安装

在终端输入以下完整命令,一键安装所需工具:

``` pip install requests-html==0.10.0 pandas==2.0.3 openpyxl==3.1.2 matplotlib==3.7.2 ```

各库作用:requests-html负责抓带JS渲染的网页,pandas处理数据,openpyxl存Excel,matplotlib画幸福度图表

实操步骤1:定位可公开抓取的《逆水寒》NPC数据

本次抓《逆水寒手游》官方玩家百科的NPC页(公开、无反爬门槛):https://nsh.163.com/wiki/m/character,先分析该页数据结构:

  • NPC列表的每个卡片对应一个HTML标签
  • 每个卡片包含:角色名、职业、性别、好感度上限、拥有的礼物数量、专属剧情章节数

实操步骤2:编写爬虫代码获取NPC基础数据

新建记事本,粘贴以下完整代码,保存为nsh_npc_spider.py(注意文件后缀是py不是txt):

``` from requests_html import HTMLSession import pandas as pd 1. 初始化会话(支持JS渲染) session = HTMLSession() target_url = "https://nsh.163.com/wiki/m/character" 2. 访问目标页并等待JS渲染3秒(适配加载较慢的官方页面) response = session.get(target_url) response.html.render(sleep=3, timeout=10) 3. 定义要爬取的字段 npc_data = [] npc_cards = response.html.find(".wiki-character-item") 通过官方百科的类名定位所有NPC卡片 4. 遍历卡片提取数据 for card in npc_cards: try: name = card.find(".wiki-character-name", first=True).text.strip() career = card.find(".wiki-character-career", first=True).text.strip() gender = card.find(".wiki-character-gender", first=True).text.strip() 好感度上限(取数字部分,如“10000好感”→10000) like_max = int(card.find(".wiki-character-like", first=True).text.strip().replace("好感", "")) 专属礼物数量(类名wiki-character-gift,文本为“专属×5”→5) gift = int(card.find(".wiki-character-gift", first=True).text.strip().split("×")[1]) 专属剧情章节数(类名wiki-character-story,文本为“专属剧情×3”→3) story = int(card.find(".wiki-character-story", first=True).text.strip().split("×")[1]) 存入临时列表 npc_data.append([name, career, gender, like_max, gift, story]) except Exception as e: print(f"跳过异常NPC:{e}") continue 5. 数据转DataFrame并保存为Excel df = pd.DataFrame(npc_data, columns=["角色名", "职业", "性别", "好感度上限", "专属礼物数", "专属剧情数"]) df.to_excel("nsh_npc_data.xlsx", index=False, engine="openpyxl") print(f"爬取完成!共获取{len(df)}条NPC数据,已保存到当前目录的nsh_npc_data.xlsx") 关闭会话 session.close() ```

运行爬虫的关键提示

  • nsh_npc_spider.py放在桌面新建的“逆水寒NPC分析”文件夹里
  • 打开该文件夹,按住Shift右键空白处,选择“在终端打开”或“在PowerShell中打开”
  • 终端输入python nsh_npc_spider.py回车,等待3-5秒(首次运行可能会自动下载Chrome内核,稍等即可)
  • 运行结束后会生成Excel文件

实操步骤3:定义“幸福度”计算公式

参考玩家公认的《逆水寒》NPC好感养成逻辑,设定3个核心权重,无门槛直接用:

  • 好感度上限:权重30%(上限越高能解锁的好感内容越多)
  • 专属礼物数:权重40%(专属礼物提升好感效率最高,越多越容易刷满)
  • 专属剧情数:权重30%(专属剧情越多,互动体验越丰富)

归一化处理公式(避免因数值量级差异影响结果):

幸福度 = ((当前好感上限/最大好感上限)30 + (当前专属礼物数/最大专属礼物数)40 + (当前专属剧情数/最大专属剧情数)30)

实操步骤4:编写Excel数据处理+可视化代码

在“逆水寒NPC分析”文件夹里新建记事本,粘贴以下完整代码,保存为nsh_happiness_analysis.py

``` import pandas as pd import matplotlib.pyplot as plt from matplotlib import rcParams 1. 配置中文字体(避免图表乱码) rcParams['font.sans-serif'] = ['SimHei'] Windows默认黑体 rcParams['axes.unicode_minus'] = False 2. 读取刚才爬取的Excel数据 df = pd.read_excel("nsh_npc_data.xlsx", engine="openpyxl") 3. 计算归一化后的各项指标 max_like = df["好感度上限"].max() max_gift = df["专属礼物数"].max() max_story = df["专属剧情数"].max() df["归一化好感上限"] = (df["好感度上限"] / max_like) 30 df["归一化专属礼物"] = (df["专属礼物数"] / max_gift) 40 df["归一化专属剧情"] = (df["专属剧情数"] / max_story) 30 4. 计算总幸福度并保留2位小数 df["幸福度"] = (df["归一化好感上限"] + df["归一化专属礼物"] + df["归一化专属剧情"]).round(2) 5. 按幸福度降序排序,取前10名最幸福的NPC top10_npc = df.sort_values(by="幸福度", ascending=False).head(10) 6. 保存带幸福度的完整Excel top10_npc.to_excel("nsh_top10_happy_npc.xlsx", index=False, engine="openpyxl") df.to_excel("nsh_all_npc_happiness.xlsx", index=False, engine="openpyxl") print("分析完成!已生成两个Excel文件") 7. 绘制前10名幸福度柱状图 plt.figure(figsize=(12, 6)) bars = plt.bar(top10_npc["角色名"], top10_npc["幸福度"], color='FFD700') 在柱子上标注具体幸福度数值 for bar in bars: height = bar.get_height() plt.text(bar.get_x() + bar.get_width()/2., height, f'{height}', ha='center', va='bottom', fontsize=10) plt.xlabel('NPC角色名', fontsize=12) plt.ylabel('幸福度(满分100)', fontsize=12) plt.title('《逆水寒手游》官方百科前10最幸福NPC', fontsize=14, pad=20) plt.xticks(rotation=45) plt.tight_layout() 自动调整布局,避免x轴标签重叠 plt.savefig("nsh_top10_happy_npc.png", dpi=300) 保存高清PNG图片 plt.show() 弹出图表窗口 ```

运行分析代码的关键提示

在刚才的终端窗口(仍在“逆水寒NPC分析”文件夹路径下)输入python nsh_happiness_analysis.py回车,等待1-2秒即可:

  • 会生成两个Excel:nsh_all_npc_happiness.xlsx(所有NPC带幸福度)、nsh_top10_happy_npc.xlsx(前10名)
  • 会弹出柱状图,同时保存300DPI的高清PNG图片到文件夹

实操步骤5:验证并调整权重(可选进阶)

如果不认可官方逻辑的权重,可以在nsh_happiness_analysis.py里修改以下3行代码的数字(总和必须为100):

``` df["归一化好感上限"] = (df["好感度上限"] / max_like) 30 改成你想要的权重,比如20 df["归一化专属礼物"] = (df["专属礼物数"] / max_gift) 40 改成50 df["归一化专属剧情"] = (df["专属剧情数"] / max_story) 30 改成30 ```

修改后重新运行分析代码即可

常见卡壳问题解决

1. requests-html首次渲染失败

终端输入pip install pyppeteer==1.0.2强制安装旧版依赖库,再重新运行爬虫

2. 图表显示乱码

  • Windows系统:确认代码里的rcParams['font.sans-serif'] = ['SimHei'],如果没有黑体换成['Microsoft YaHei']
  • Mac系统:换成rcParams['font.sans-serif'] = ['Arial Unicode MS']

3. 找不到Excel文件

确认所有py文件都放在同一个文件夹,终端运行时路径正确(终端开头显示的文件夹名就是当前路径)

版权保护: 本文由 741卡盟 原创,转载请保留链接: http://741ka.com/gamenews/22256.html