如何使用python中的webbrowser模块打开newtab页面?

Dan*_*Dan 4 python google-chrome

我目前正在尝试使用 python 中的 webbrowser 模块打开我的 chrome 默认新标签页。我已经使用它来打开随机 url,但是,当我尝试使用 chrome://newtab 作为 url 时,我只是收到一条消息,说“没有安装应用程序来打开这种类型的链接”。

这是相关的代码(不多):

import webbrowser
webbrowser.open_new_tab("chrome://newtab")
Run Code Online (Sandbox Code Playgroud)

是的,chrome 是我的默认浏览器。谢谢您的帮助!

Way*_*lan 5

请注意,文档指出:

请注意,在某些平台上,尝试使用此函数打开文件名可能会起作用并启动操作系统的关联程序。但是,这既不支持也不可移植。

自从我看这个已经有一段时间了,但我记得至少在某些系统上,它在后台工作的方式是将给定的 URI 传递给系统特定的内置命令,然后在传入任何类型 URI 的系统默认值。换句话说,使用给定文件类型的默认应用程序。URI 是否指向本地文件并不重要。因此,URIhttp://examplce.comn/somefile.pdf将在系统默认 PDF 查看器(可能不是浏览器)上打开 PDF 文件。正如文档所指出的,由于底层实现,这是偶然发生的。

但是,在不同的操作系统中,这样的系统特定命令不存在,所有 URI 都将在 Web 浏览器中打开。

您没有提到您正在使用哪个操作系统(我忘记了哪个操作系统以哪种方式工作),但我怀疑您正在使用第一种类型的操作系统。您可能(再次取决于您拥有的系统)能够通过指定使用特定浏览器来覆盖默认行为。

您可以尝试将环境变量设置BROWSERos.pathsep 分隔的浏览器列表,以便按顺序尝试。检查os.pathsep( import os; print os.pathsep)的值以查看系统使用哪个字符(通常':'用于 POSIX 或';'Windows),然后使用该字符分隔列表中的项目。当然,您可能只需要将一项分配给列表 (chrome),在这种情况下,您根本不需要使用分隔符。像这样(确保为您的系统使用正确的路径):

SET BROWSER="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
Run Code Online (Sandbox Code Playgroud)

或者,您可以尝试使用webrowser.get()以编程方式选择浏览器。但是,直到Python 3.3才添加对 Chrome 的支持。如果您使用的是 Python 3.3+,请尝试:

import webbrowser
chrome = webbrowser.get('google-chrome') # or webbrowser.get('chrome')
chrome.open_new_tab('chrome://newtab')
Run Code Online (Sandbox Code Playgroud)

注:以上内容未经测试。我不知道您拥有哪个系统,因此无法复制您的特定设置。天啊。


更新:

据我所知,您使用的是 Python 3.3 之前的 Windows 机器,也许以下内容会有所帮助。您还可以注册一个浏览器,以便 Python 知道它:

pth = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
webbrowser.register('chrome', None, webbrowser.BackgroundBrowser(pth))
chrome = webbrowser.get('chrome')
chrome.open_new_tab('chrome://newtab')
Run Code Online (Sandbox Code Playgroud)