java - 如何从同名但数据不同的类中的类中获取数据?
问题描述
我试图提取我的 DnD 角色统计数据(力量、敏捷、智慧等)并打印数字。到目前为止,我尝试过的一切都没有提取任何数据并打印为空。https://www.dndbeyond.com/characters/11196319
我试过了
doc.select("ct-ability-summary__label");
doc.select("ct-ability-summary__label").first();
doc.select("div[class=ct-ability-summary__primary:eq(0)]");
List<String> Stats = new ArrayList<>();
for( Element element : doc.select("div[class=ct-ability-summary__primary]") )
{
Stats.add(element.text());
}
<div class="ct-quick-info__abilities">
<div class="ct-quick-info__ability">
<div class=" ct-ability-summary">
<div class="ct-ability-summary__heading">...</div>
<div class="ct-ability-summary__primary">10</div>
<div class="ct-ability-summary__secondary">...</div>
<div class="ct-quick-info__ability">
<div class=" ct-ability-summary">
<div class="ct-ability-summary__heading">...</div>
<div class="ct-ability-summary__primary">13</div>
<div class="ct-ability-summary__secondary">...</div>
我试图从中提取数据并将其打印出来。所以在这种情况下,我希望打印 10 和 13。它可以添加到列表/数组或单个字符串中。只要它获得可用于打印的数据。如果这两个可以工作,假设我可以让其他 4 个工作。
解决方案
这始终表明 JavaScript 会获取一些额外的数据并动态添加到页面 (DOM) 中。Jsoup 无法执行 JavaScript,这就是您的选择返回 null 的原因。您可以使用浏览器的调试器来检查加载的内容:
您可以看到数据存储为 JSON,并且可以使用此 URL 直接访问: https ://www.dndbeyond.com/character/11196319/json
不幸的是,Jsoup 无法解析 JSON,因此您必须使用其他一些库。另请注意,此页面执行一些计算,并非您看到的所有内容都直接记录在此 JSON 中。例如,如果你格式化它,你可以看到你有一些统计数据:
stats: [
{
id: 1,
name: null,
value: 10},
{
id: 2,
name: null,
value: 13},
{
id: 3,
name: null,
value: 14},
{
id: 4,
name: null,
value: 15},
{
id: 5,
name: null,
value: 12},
{
id: 6,
name: null,
value: 12}
],
似乎有些不对劲,因为你的智力不是 15 而是 16,那是因为你有种族加值 +1,而且这个值存储在其他地方。找出这些统计数据如何相互影响可能很复杂。
因此,为了确保您拥有正确的最终值而不是基础值,我建议您放弃解析 JSON 的 Jsoup 方法并改用 Selenium Webdriver,因为它能够获得您看到的确切值,因为它执行 JavaScript。
推荐阅读
- java - 如何在没有 Class.forName 或 DriverManager.registerDriver 的情况下自动加载 JDBC Wrapper Driver 类
- python - 使用 PyTorch,当我有填充时,我的 Conv1d 维度如何减少?
- javascript - 为什么这个 React 状态数组不会填充对象数据?
- python-3.x - 通过将列值乘以另一个数据框来创建多索引数据框
- javascript - 从 POST 请求正文 NodeJS 和 Angular 获取文件
- swift - 我刚刚将 MapKit 添加到我的应用程序中,并且有一个带有覆盖路线的 mapView,如何将带有覆盖的 mapView 保存为图像?
- python - Python:处理熊猫数据框中的列
- python - xlsxwriter 创建不可读的文件(python)
- c# - 如何修复 C# MOngoDB 中的日期匹配错误
- javascript - 为什么 bgcolor 停止将 HTML 表格导出到 Excel?