如何通过Selenium启用Chromium阅读器模式?该功能是否仍存在?
Chromium/Chrome 阅读器模式状态及Selenium使用方案
阅读器模式是否仍存在?
Chrome的阅读器模式(Reader Mode)目前依然存在,但默认隐藏了UI入口,且在Mac平台的官方Chrome/Chromium版本中,即使手动开启chrome://flags中的相关选项,也可能不会显示地址栏的阅读器图标。这是因为Google逐步将该功能转为后台可用状态,仅保留核心的DOM Distiller功能供程序调用,不再默认开放前端入口。
如何通过Selenium启用并使用阅读器模式?
1. 配置Chrome启动参数
需在Selenium的ChromeOptions中添加强制启用阅读器模式的参数,确保功能后台生效:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 启用阅读器模式核心组件DOM Distiller chrome_options.add_argument("--enable-dom-distiller") # 强制启用,绕过平台默认限制 chrome_options.add_argument("--force-enable-dom-distiller") # 适配新版本Chrome的特性开关 chrome_options.add_argument("--enable-features=ReaderMode") driver = webdriver.Chrome(options=chrome_options)
2. 触发阅读器模式的两种方法
方法一:直接导航阅读器模式专属URL
Chrome阅读器模式有固定URL格式:chrome-reader://<原网页URL>,将目标网页URL替换为此格式,即可直接加载纯正文视图:
target_url = "https://example.com/article" reader_url = f"chrome-reader://{target_url}" driver.get(reader_url) # 提取页面纯正文内容 content = driver.find_element("tag name", "body").text
方法二:执行JavaScript触发模式
若直接导航阅读器URL失效,可通过执行Chrome内部API触发阅读器模式:
driver.get("https://example.com/article") # 执行JS初始化阅读器模式 driver.execute_script(""" if (window.chrome && chrome.distiller) { chrome.distiller.distill({ url: window.location.href, onDistilled: function(result) { document.body.innerHTML = result.html; } }); } """) # 等待视图加载完成后提取内容 import time time.sleep(2) # 根据页面加载速度调整等待时长 content = driver.find_element("tag name", "body").text
3. 注意事项
- 不同Chrome/Chromium版本的参数和API可能略有差异,若上述方法失效,可尝试更新浏览器或调整启动参数(例如仅保留
--enable-features=ReaderMode)。 - 部分网站可能限制阅读器模式解析,此时可切换为你已熟悉的Firefox阅读器视图方案作为备选。
内容的提问来源于stack exchange,提问作者hotips
相关产品推荐
相关产品推荐

