返回
原神抽卡记录如何爬取?实际例子一键导出记录!
前端
2023-09-21 08:09:18
作为一款深受全球玩家喜爱的游戏,原神凭借其精美的画面、丰富的剧情和多样化的玩法吸引了无数玩家。而在原神的游戏中,抽卡无疑是玩家们最为关注的环节之一。如何提高抽卡效率,如何了解自己的抽卡规律,如何计算下一次保底的距离,这些都是困扰着广大玩家的问题。
本着技术服务生活的理念,我决定自制一个网页,用于获取原神的抽卡数据,并将其以更加清晰的统计图和扇形图的形式展示出来,帮助玩家们更加直观地了解自己的抽卡情况和规律。
准备工作
在开始爬取原神抽卡记录之前,我们需要先做好一些准备工作:
- 安装Python及其相关库。
- 获取原神的游戏数据。
- 搭建一个简单的Web服务器。
爬取原神抽卡记录
获取原神的游戏数据有多种方法,最简单的方法是使用米哈游官方提供的原神数据接口。该接口可以提供玩家的抽卡记录、角色信息、武器信息等多种数据。
import requests
# 设置原神数据接口的URL
url = "https://api.genshin.mihoyo.com/gacha_log/api/getGachaLog"
# 设置请求头,模拟浏览器行为
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
}
# 发起请求,获取抽卡记录
response = requests.get(url, headers=headers)
# 解析响应数据,提取抽卡记录
gacha_log = response.json()["data"]["list"]
数据分析和可视化展示
获取到抽卡记录后,我们可以对其进行分析和可视化展示。例如,我们可以统计玩家的总抽卡次数、每次抽卡的出货频率、下一次保底的距离等信息。我们还可以将这些数据以统计图和扇形图的形式展示出来,帮助玩家更加直观地了解自己的抽卡情况和规律。
import matplotlib.pyplot as plt
# 统计玩家的总抽卡次数
total_gacha_count = len(gacha_log)
# 统计每次抽卡的出货频率
gacha_success_count = 0
for gacha in gacha_log:
if gacha["item_type"] == "角色":
gacha_success_count += 1
gacha_success_rate = gacha_success_count / total_gacha_count
# 统计下一次保底的距离
next_guaranteed_gacha_count = 90 - gacha_success_count
# 将数据以统计图和扇形图的形式展示出来
plt.bar("总抽卡次数", total_gacha_count)
plt.bar("出货频率", gacha_success_rate)
plt.bar("下一次保底距离", next_guaranteed_gacha_count)
plt.pie([total_gacha_count, gacha_success_count, next_guaranteed_gacha_count], labels=["总抽卡次数", "出货频率", "下一次保底距离"])
plt.show()
Web开发
为了方便玩家使用,我们可以将爬取、分析和展示的功能集成到一个简单的Web页面中。该页面可以提供玩家登录、查询抽卡记录、查看统计图和扇形图等功能。
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="gacha_log.php" method="post">
<input type="text" name="username" placeholder="玩家账号">
<input type="password" name="password" placeholder="玩家密码">
<input type="submit" value="查询">
</form>
<?php
if (isset($_POST["username"]) && isset($_POST["password"])) {
$username = $_POST["username"];
$password = $_POST["password"];
// 使用米哈游官方提供的原神数据接口获取抽卡记录
$url = "https://api.genshin.mihoyo.com/gacha_log/api/getGachaLog";
$headers = [
"User-Agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
];
$data = [
"uid" => $username,
"region" => "os_asia",
"lang" => "zh-cn",
];
$response = requests.post($url, headers=headers, data=data);
$gacha_log = $response->json()["data"]["list"];
// 对抽卡记录进行分析和可视化展示
$total_gacha_count = count($gacha_log);
$gacha_success_count = 0;
for ($i = 0; $i < $total_gacha_count; $i++) {
if ($gacha_log[$i]["item_type"] == "角色") {
$gacha_success_count++;
}
}
$gacha_success_rate = $gacha_success_count / $total_gacha_count;
$next_guaranteed_gacha_count = 90 - $gacha_success_count;
// 将数据以统计图和扇形图的形式展示出来
echo "<div style='width: 50%; float: left;'>";
echo "<h3>统计图</h3>";
echo "<canvas id='barChart' width='400' height='300'></canvas>";
echo "</div>";
echo "<div style='width: 50%; float: right;'>";
echo "<h3>扇形图</h3>";
echo "<canvas id='pieChart' width='400' height='300'></canvas>";
echo "</div>";
echo "<script>";
echo "var barChart = new Chart(document.getElementById('barChart'), {
type: 'bar',
data: {
labels: ['总抽卡次数', '出货频率', '下一次保底距离'],
datasets: [{
label: '抽卡记录',
data: [$total_gacha_count, $gacha_success_rate, $next_guaranteed_gacha_count]
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});";
echo "var pieChart = new Chart(document.getElementById('pieChart'), {
type: 'pie',
data: {
labels: ['总抽卡次数', '出货频率', '下一次保底距离'],
datasets: [{
data: [$total_gacha_count, $gacha_success_rate, $next_guaranteed_gacha_count]
}]
},
options: {
responsive: true,
legend: {
position: 'bottom'
}
}
});";
echo "</script>";
}
?>
</body>
</html>
结语
通过本教程,您将学会如何使用Python爬虫技术从原神游戏中导出抽卡记录,并将其以更加清晰的统计图和扇形图的形式展示出来。希望本教程能够帮助您更好地了解自己的抽卡情况和规律,从而提高抽卡效率。