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

requests_html的HTML.render方法在Azure虚拟机中运行失败如何解决

故障排查与解决方案

根本原因

requests_html的render()方法底层依赖Chromium浏览器运行时完成JS动态渲染,本地运行正常是因为你的个人系统已经预装了Chromium/Chrome浏览器及相关依赖库,而Azure虚拟机默认的服务器级操作系统(无桌面环境)缺少Chromium运行所需的依赖包,同时也存在环境配置不兼容的问题。


分步解决方法

1. 预装Chromium及依赖库

手动安装Chromium可以同时解决依赖缺失、以及requests_html首次运行时自动下载Chromium失败的问题,对应不同操作系统执行对应命令:

  • Debian/Ubuntu 系列:
sudo apt update && sudo apt install -y chromium-browser chromium-chromedriver libxss1 libnss3 libasound2 libatk-bridge2.0-0 libgtk-3-0
  • CentOS/RHEL 系列:
sudo yum install -y chromium chromium-driver libXScrnSaver nss alsa-lib at-spi2-atk gtk3

2. 调整代码适配无桌面服务器环境

服务器无图形界面,需要给Chromium指定无头运行参数,同时规避权限、资源不足的问题,修改后代码如下:

from requests_html import HTMLSession

def get_page_content(link):
    s = HTMLSession()
    # 自定义浏览器启动参数
    browser_args = [
        "--no-sandbox", # 关闭沙箱,解决root用户运行Chromium的权限报错
        "--headless=new", # 启用无头模式,无需图形界面
        "--disable-gpu", # 禁用GPU加速,规避无显卡环境兼容性问题
        "--disable-dev-shm-usage", # 解决服务器共享内存不足的问题
        "--single-process" # 单进程运行,降低资源占用
    ]
    try:
        response = s.get(link, timeout=15)
        response.html.render(
            timeout=60, 
            reload=False,
            browser_args=browser_args
        )
        content = response.text
    finally:
        s.close()
    return content

3. 云环境特殊配置排查

如果上述操作后仍报错,检查以下配置:

  • 检查Azure虚拟机网络安全组的出口规则,确认允许访问目标站点的端口,没有流量拦截限制
  • 确认虚拟机可用内存不小于1G,Chromium运行最低需要1G左右内存,配置不足可以升级实例或者增加swap分区
  • 不要使用root用户直接运行脚本,如果必须用root运行,确保已经添加--no-sandbox参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:00:01