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

Python不使用Selenium获取JS动态生成页面源码的问题

动态JS页面源码获取可行方案

原有代码失效原因

  • 代码执行顺序错误:先调用session.get()再实例化HTMLSession(),请求发起逻辑本身不成立
  • 属性读取错误:r.text存储的是初始请求返回的未渲染静态源码,JS渲染完成后内容不会同步更新到这个属性
  • 缺少适配参数:打印机嵌入式Web服务用自签名HTTPS证书、JS逻辑存在跨域/非常规资源加载逻辑,默认参数会导致JS执行中断,触发JS禁用提示

可直接运行的修正代码

from requests_html import HTMLSession
import urllib3

# 关闭自签名证书访问警告
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# 先实例化会话再发起请求
session = HTMLSession()
r = session.get('https://220.116.57.59', timeout=10, verify=False)
# 配置渲染参数:留足JS执行时间、忽略资源加载错误、适配无桌面环境运行
r.html.render(
    timeout=20,
    sleep=3,
    ignore_resource_errors=True,
    browser_args=["--no-sandbox", "--disable-web-security"]
)
# 从html属性读取JS执行完成后的完整页面源码
full_source = r.html.html
print(full_source)

关键说明

  • 方案不需要提前安装全量浏览器,首次运行render()方法会自动下载轻量Chromium内核,符合运行环境要求
  • 渲染完成后必须通过r.html.html获取动态源码,不要读取r.text
  • 如果页面加载慢,可以适当调大sleep参数值,给前端JS预留充足的渲染执行时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 12:21:18