Python:chrome.exe的通用webbrowser.get()。open()不起作用

时间:2014-07-21 19:38:41

标签: python google-chrome generics browser

我使用的是Python 2.7(Win 8.1 x64),我想在Chrome中打开一个网址。 由于Chrome仅在3.3+中本机支持,我正在尝试通用调用:

import webbrowser
webbrowser.get("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe %s").open("http://google.com")

路径正确,打印确实给了我一个处理程序:

"<webbrowser.GenericBrowser object at 0x0000000002D26518\>"

但是,open() - 最好是open_new_tab()) - 函数不起作用。它返回False。

如果我运行命令

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "https://google.com"

在Windows运行对话框中,它确实可以正常工作。


如果我将Chrome设置为标准浏览器并运行

webbrowser.get().open("http://google.com")

它确实有效,但这不是我想要的。

有谁知道出了什么问题?

6 个答案:

答案 0 :(得分:6)

您必须在webbrowser.get电话中使用unix风格的路径:

webbrowser.get("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s").open("http://google.com")

这是因为webbrowser内部在路径上执行shlex.split,这将只删除Windows样式的路径分隔符:

>>> cmd = "C:\\Users\\oreild1\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe %s"
>>> shlex.split(cmd)
['C:Usersoreild1AppDataLocalGoogleChromeApplicationchrome.exe', '%s']
>>> cmd = "C:/Users/dan/AppData/Local/Google/Chrome/Application/chrome.exe %
s"
>>> shlex.split(cmd)
['C:/Users/dan/AppData/Local/Google/Chrome/Application/chrome.exe', '%s']
如果给出shlex关键字参数,

posix=False实际上会在这里做正确的事情,但webbrowser不会提供,即使在Windows上也是如此。这可以说是webbrowser中的一个错误。

答案 1 :(得分:2)

按照上面的建议并在Windows上工作,启用Firefox我已经更改(并且未注释)配置文件中的以下行(注意结尾处的%s):

c.NotebookApp.browser ='C:/ Program Files(x86)/ Mozilla Firefox / firefox.exe%s'

这对我有用。 感谢

答案 2 :(得分:1)

您不需要切换到Unix风格的路径 - 只需引用可执行文件。

import webbrowser
webbrowser.get('"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" %s').open('http://google.com')

答案 3 :(得分:0)

为我工作

导入网络浏览器

chrome_path ='C:/程序文件(x86)/Google/Chrome/Application/chrome.exe%s' webbrowser.get(chrome_path).open('http://google.com')

答案 4 :(得分:0)

在Windows上,您不需要使用UNIX样式的路径。只需将原始字符串路径包装到转义引号中的google.exe,然后在f-string内的%s令牌后面附加:

import webbrowser

url = "https://docs.python.org/3/library/webbrowser.html"
chrome = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
webbrowser.get(f"\"{chrome}\" %s").open_new_tab(url)

答案 5 :(得分:-1)

您可以尝试以下方法:

import webbrowser

chrome_path = "path_where_chrome_is_located"
webbrowser.register('chrome', None, webbrowser.BackgroundBrowser(chrome_path))

webbrowser.get('chrome').open('url')