Python BeautifulSoup HTML解析类选择


@bot.event
async def on_message(message):
msg = message.content
if message.content.startswith("https:"):
response = requests.get(f"https://steamid.io/lookup/" f"{msg}")
soup = BeautifulSoup(response.text, "html.parser")
print(soup.prettify())

当我运行代码时,网站的代码被写成html

</div>
<dl class="panel-body dl-horizontal">
<dt class="key">
steamID
</dt>
<dd class="value short">
<img alt="copy to clipboard" class="cp" data-clipboard-text="STEAM_0:0:444916529" data-placement="bottom" data-toggle="tooltip" src="https://steamid.io/static/img/copy.png" title="copy to clipboard"/>
<a href="https://steamid.io/lookup/STEAM_0:0:444916529" id="a" rel="nofollow">
STEAM_0:0:444916529
</a>
</dd>
<dt class="key">
steamID3
</dt>
<dd class="value short">
<img alt="copy to clipboard" class="cp" data-clipboard-text="[U:1:889833058]" data-placement="bottom" data-toggle="tooltip" src="https://steamid.io/static/img/copy.png" title="copy to clipboard"/>
<a href="https://steamid.io/lookup/[U:1:889833058]" rel="nofollow">
[U:1:889833058]
</a>
</dd>
<dt class="key">
steamID64
</dt>
<dd class="value short">
<img alt="copy to clipboard" class="cp" data-clipboard-text="76561198850098786" data-placement="bottom" data-toggle="tooltip" src="https://steamid.io/static/img/copy.png" title="copy to clipboard"/>
<a href="https://steamid.io/lookup/76561198850098786">
76561198850098786
</a>
</dd>
<dt class="key">
customURL
</dt>
<dd class="value short">
not set
</dd>
<dt class="key">
profile state
</dt>

我想从代码中解析并选择以下部分

<dt class="key">
steamID64
</dt>
<dd class="value short">
<img alt="copy to clipboard" class="cp" data-clipboard-text="76561198850098786" data-placement="bottom" data-toggle="tooltip" src="https://steamid.io/static/img/copy.png" title="copy to clipboard"/>
<a href="https://steamid.io/lookup/76561198850098786">
76561198850098786
</a>

我想解析并选择这样的部分:;76561198850098786〃;从这里开始,我该怎么做?

您可以使用:-soup-contains以包含术语steamID64的类别key的元素为目标,然后使用相邻的同级组合子移动到类别value的相邻元素,然后使用子组合子移动至具有所需值的a标记

soup.select_one('.key:-soup-contains("steamID64") + .value > a').text

最新更新