首页 > 解决方案 > 如何获取 javascript 变量的内容?

问题描述

当我使用beautifulsoup4 阅读网站时,我正在尝试获取网站上的javascript 变量的内容。javascript 变量在输出之前参与计算。

包含以下所有 javascript 的网站是:查看源:https ://r6.tracker.network/profile/pc/thelonerankwolf/matches

我想检索matchGroup.data.matches,matchGroup.data.winsmatchGroup.data.kd

<section class="trn-scont__content">
<div class="trn-card" v-for="(matchGroup) in filteredMatches">
<div class="trn-card__content">
<h2 class="trn-title trn-title--normal">
{{ showDate(matchGroup.day) }}
</h2>
<div class="trn-defstats-grid">
<div class="trn-defstat">
<div class="trn-defstat__name">Matches</div>
<div class="trn-defstat__value">{{ matchGroup.data.matches }}</div>
</div>
<div class="trn-defstat">
<div class="trn-defstat__name">Wins</div>
<div class="trn-defstat__value">{{ matchGroup.data.wins }}</div>
</div>
<div class="trn-defstat">
<div class="trn-defstat__name">Kills</div>
<div class="trn-defstat__value">{{ matchGroup.data.kills }}</div>
</div>
<div class="trn-defstat">
<div class="trn-defstat__name">K/D</div>
<div class="trn-defstat__value">{{ matchGroup.data.kd }}</div>
</div>
<div class="trn-defstat">
<div class="trn-defstat__name">MMR Change</div>
<div class="trn-defstat__value">{{ matchGroup.data.mmrDelta }}</div>
</div>
<div class="trn-defstat">
<div class="trn-defstat__name">Time Played</div>
<div class="trn-defstat__value" v-seconds-to-hms="matchGroup.data.timePlayed"></div>
</div>
</div>
</div>

我需要帮助获取变量的值,例如:Matches= 6

标签: pythonpython-3.xpython-3.6

解决方案


BeautifulSoup 是一个只解析 HTML 的 Python 库。它允许您获取 HTML 元素内部的信息(例如文本、链接、图像),但它不会为您运行 javascript。如果您需要查看此变量的值,并且它以您想要的方式实例化,那么您可以简单地使用字符串解析器,如答案所示。如果您需要运行 javascript 代码来获取变量的值,那么您将需要其他的东西。您可以使用 PhantomJS,但我的建议是使用selenium。Selenium 允许您控制浏览器,例如 Chrome,它将为您运行网页上的所有 javascript 代码。


推荐阅读