如何在Windows系统下使用Python以无界面(或最小化)模式运行Selenium浏览器?
如何在Windows系统下使用Python以无界面(或最小化)模式运行Selenium浏览器?
嗨,我来帮你解决这个问题!你已经找对了方向——EPO的页面是动态加载的,用requests确实拿不到完整内容,Selenium是正确的选择。关于隐藏浏览器窗口的需求,我给你两种实用的方案,你可以根据自己的需求选:
一、无界面(无头)模式(完全看不到浏览器窗口)
你之前尝试了--headless参数,但可能用的是旧版无头模式,现在Chrome推荐用新的无头模式,兼容性和稳定性更好。你可以这样修改你的ChromeOptions配置:
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By import re ep_number = 3624475 application_number = 19183545 options = webdriver.ChromeOptions() # 启用新版无头模式,比旧版兼容性更强 options.add_argument("--headless=new") # Windows环境下建议添加,避免部分渲染异常问题 options.add_argument("--disable-gpu") # 设置窗口尺寸,防止页面布局错乱(可选但推荐) options.add_argument("--window-size=1920,1080") # 关闭不必要的日志输出,让控制台更干净(可选) options.add_argument("--log-level=3") # 启动配置好的浏览器 driver = webdriver.Chrome(options=options) try: # 替换为EPO对应专利查询页面的实际URL driver.get(f"https://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR={ep_number}&KC=A1&FT=D&date=20200610&DB=EPODOC&locale=en_EP") # 等待页面动态加载完成,获取专利名称(根据页面实际元素调整选择器) patent_name = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "h1.document-title")) ).text print(f"获取到的专利名称:{patent_name}") finally: # 操作完成后务必关闭浏览器,避免残留后台进程 driver.quit()
二、最小化窗口模式(浏览器后台运行,窗口缩到任务栏)
如果你不想完全用无头模式,只是希望浏览器窗口不打扰你操作,可以用以下两种方式:
方式1:启动时直接最小化
options = webdriver.ChromeOptions() # 让浏览器启动时自动最小化到任务栏 options.add_argument("--start-minimized") driver = webdriver.Chrome(options=options) # 后续爬取操作和上面的代码一致...
方式2:启动后手动触发最小化
driver = webdriver.Chrome() # 浏览器启动后立即将窗口最小化 driver.minimize_window() # 后续爬取操作和上面的代码一致...
需要注意的是,无头模式下一些需要可视化交互的弹窗(如果有的话)不会出现,但EPO的查询页面一般不会有这类强制弹窗影响爬取。另外,不管用哪种模式,操作结束后一定要调用driver.quit()关闭浏览器进程,避免占用系统资源。
备注:内容来源于stack exchange,提问作者elitsa3111
相关产品推荐
相关产品推荐

