You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup爬取Minecraft dynmap仅输出DIV标签名,如何获取完整HTML

问题解决:爬取Minecraft Dynmap页面无法获取完整内容

问题原因

你当前使用的requests库只能获取服务端返回的初始静态HTML内容,而Dynmap的地图元素、玩家信息等所有核心数据,都是页面加载后由JavaScript异步请求后端接口、再动态渲染到页面中的,初始静态HTML里id为mcmap的div本身就是空容器,所以你只能拿到标签本身,拿不到内部渲染后的内容。

解决方法

方法1:使用无头浏览器获取渲染后的完整HTML(适合需要完整页面内容的场景)

用Selenium这类工具模拟浏览器运行,等待页面JS执行完成、内容全部渲染后再提取HTML,示例代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time

URL = "http://play.fantasycraftmc.eu:25570/?worldname=kingdom&mapname=flat&zoom=0&x=3904&y=64&z=2176#/"

# 配置无头模式,不弹出浏览器窗口
chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--disable-gpu")

driver = webdriver.Chrome(options=chrome_options)
driver.get(URL)
# 等待3秒让页面完全加载,也可以用显式等待判断元素加载完成进一步提升效率
time.sleep(3)

# 获取渲染后的完整页面HTML
full_html = driver.page_source
soup = BeautifulSoup(full_html, "html.parser")
div = soup.find(id="mcmap")
print(div)

driver.quit()

使用前需要先安装依赖:pip install selenium beautifulsoup4

方法2:直接调用Dynmap公开接口获取玩家数据(更高效,推荐)

不需要爬取页面解析HTML,Dynmap本身有公开的JSON接口返回实时玩家信息,你可以在浏览器F12控制台的「网络」选项卡中过滤XHR请求,找到返回玩家列表的接口直接请求即可,不需要渲染页面,速度更快、数据解析更简单。多数Dynmap的玩家数据接口格式为http://dynmap地址/up/world/{世界名}/,返回的JSON中直接包含players字段,可直接提取信息。

内容的提问来源于stack exchange,提问作者Chappies Wereld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:24:03