首先,安装一些常用的中文字体包:
sudo yum install -y wqy-microhei-fonts wqy-zenhei-fonts cjkuni-uming-fonts2. 安装更多字体
如果上述字体不足以解决问题,可以安装更多字体:
# 安装所有可用的字体包 sudo yum install -y xorg-x11-fonts-* # 安装 Google Noto 字体(包含广泛的语言支持) sudo yum install -y google-noto-sans-cjk-fonts google-noto-serif-cjk-fonts3. 手动安装 Windows 字体
如果网页使用的是 Windows 特有的字体(如微软雅黑、宋体等),可以手动从 Windows 系统复制这些字体:
# 创建字体目录 sudo mkdir -p /usr/share/fonts/windows # 将字体文件复制到该目录(需要先从 Windows 系统获取字体文件) # 例如:sudo cp /path/to/msyh.ttf /usr/share/fonts/windows/ # 设置权限 sudo chmod 644 /usr/share/fonts/windows/* # 更新字体缓存 sudo fc-cache -fv4. 在 Selenium 中设置字体渲染选项
在 Selenium 代码中添加特定的 Chrome 选项来改善字体渲染:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--font-render-hinting=none") # 禁用字体微调 chrome_options.add_argument("--disable-gpu") # 禁用 GPU 加速 chrome_options.add_argument("--force-device-scale-factor=1") # 强制缩放因子 # 如果使用无头模式 chrome_options.add_argument("--headless") driver = webdriver.Chrome(options=chrome_options)5. 使用字体替换
如果特定字体无法获取,可以使用 CSS 来强制替换网页中的字体:
# 在页面加载后执行 JavaScript 来替换字体 driver.execute_script(""" document.body.style.fontFamily = "WenQuanYi Micro Hei, sans-serif"; var all = document.getElementsByTagName("*"); for (var i=0; i<all.length; i++) { all[i].style.fontFamily = "WenQuanYi Micro Hei, sans-serif"; } """)6. 检查字体是否正确安装
可以使用以下命令检查系统中已安装的字体:
fc-list :lang=zh
这将列出所有支持中文的字体。
7. 重启字体服务安装新字体后,确保重新加载字体缓存:
sudo fc-cache -fv
通过以上步骤,应该能够解决 CentOS 中 Selenium 网页字体显示不正确的问题。如果问题仍然存在,可能需要检查具体的网页使用了哪些特殊字体,并针对性地安装这些字体。
网友回复
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?
js在浏览器中如何使用MediaStream与MediaRecorder实现声音音频多轨道混流?