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

为什么Python urlopen获取的网页源码与Chrome不同,无法找到modal-body元素?

结果不一致的核心原因
  • 你要找的modal-body节点属于JS动态渲染生成的内容,并不存在于服务端首次返回的静态HTML源码中。Chrome浏览器加载页面后会自动执行页面关联的所有JS代码,完成DOM节点的插入后才会生成你在开发者工具里看到的完整DOM树;而urllib、curl这类工具仅能获取静态HTML,不会执行JS逻辑,因此无法找到对应节点。
可行的解决方案

方案1:使用支持JS渲染的自动化工具(推荐快速适配)

你可以用Selenium、Playwright这类模拟浏览器运行的工具,完整加载页面并等待JS执行完成后再提取元素,以下是Selenium的参考代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options

if __name__ == '__main__':
    # 配置Chrome无头模式,不需要弹出浏览器窗口
    chrome_opt = Options()
    chrome_opt.add_argument("--headless=new")
    chrome_opt.add_argument("user-agent=Mozilla/5.0")
    
    driver = webdriver.Chrome(options=chrome_opt)
    url = "http://tool.liumingye.cn/music/?page=audioPage&type=migu&name=Unstoppable"
    driver.get(url)
    # 等待页面JS渲染完成,也可以换成WebDriverWait显示等待优化执行效率
    driver.implicitly_wait(3)
    
    # 提取所有modal-body元素
    modal_list = driver.find_elements(By.CLASS_NAME, "modal-body")
    for modal in modal_list:
        print(modal.get_attribute("outerHTML"))
    
    driver.quit()

方案2:抓包调用底层接口(性能更高)

你可以打开Chrome开发者工具的「网络」面板,筛选「XHR/ fetch」类型的请求,刷新页面后找到用来生成modal-body内容的后端接口,直接模拟请求该接口获取数据,不需要解析HTML,运行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:06:03