Python webbrowser.open()打开Chrome浏览器

时间:2014-03-17 00:50:55

标签: python python-3.x

根据文档http://docs.python.org/3.3/library/webbrowser.html,它应该在默认浏览器中打开,但出于某种原因在我的机器上它打开IE。我做了谷歌搜索,我遇到了一个答案,说我需要注册浏览器,但我不知道如何使用webbrowser.register(),文档似乎不是很清楚。如何注册Chrome以便我在Chrome浏览器中传递给webbrowser.open()的网址而不是IE?

18 个答案:

答案 0 :(得分:55)

您可以使用Chrome的路径调用get()。下面是一个示例 - 将chrome_path替换为您平台的正确路径。

import webbrowser

url = 'http://docs.python.org/'

# MacOS
chrome_path = 'open -a /Applications/Google\ Chrome.app %s'

# Windows
# chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'

# Linux
# chrome_path = '/usr/bin/google-chrome %s'

webbrowser.get(chrome_path).open(url)

答案 1 :(得分:28)

对于Windows,路径使用UNIX样式路径,因此将反斜杠设置为正斜杠。

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

请参阅:Python: generic webbrowser.get().open() for chrome.exe does not work

答案 2 :(得分:7)

import webbrowser 
new = 2 # open in a new tab, if possible

# open a public URL, in this case, the webbrowser docs
url = "http://docs.python.org/library/webbrowser.html"
webbrowser.get(using='google-chrome').open(url,new=new)

您可以通过更改a link

中给出的参数“使用”来使用任何其他浏览器

答案 3 :(得分:3)

为我工作,以在google-chrome上打开新标签页:

import webbrowser

webbrowser.open_new_tab("http://www.google.com")

答案 4 :(得分:2)

我注意到并遇到问题的一件事是斜杠,在 Windows 中,你需要在路径中有两个斜杠,然后这可以正常工作。

import webbrowser
chrome_path = "C://Program Files (x86)//Google//Chrome//Application//Chrome.exe %s"
webbrowser.get(chrome_path).open("https://github.com/")

这至少对我有用

答案 5 :(得分:1)

from selenium import webdriver
#driver = webdriver.Firefox()
driver = webdriver.Chrome()
driver.get("http://www.python.org")

答案 6 :(得分:1)

在Windows中为我工作

放置Chrome应用程序的路径,不要忘记将%s放在最后。我仍然试图用html代码打开浏览器而不保存文件......我会在找到文件后添加代码。

Function

>>> link to: [a page from my blog where I explain this]<<<

答案 7 :(得分:1)

你也可以使用这个:

import webbrowser

chrome_path = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
url = "http://docs.python.org/"

webbrowser.register('chrome', None, webbrowser.BackgroundBrowser(chrome_path))
webbrowser.get('chrome').open_new_tab(url)

答案 8 :(得分:1)

请检查以下内容:

import webbrowser
chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'
webbrowser.get(chrome_path).open('http://docs.python.org/')

答案 9 :(得分:1)

将此用于我玩的游戏,这很重要,因此我将其保留。真的很简单。从platform.system获取价值。根据不同操作系统的已知值对其进行检查。如果找到匹配项,它将为您设置镶边路径。如果没有找到,它将打开默认浏览器到您的链接。希望它对某人有用。

import time
import os
import webbrowser
import platform

user_OS = platform.system()
chrome_path_windows = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'
chrome_path_linux = '/usr/bin/google-chrome %s'
chrome_path_mac = 'open -a /Applications/Google\ Chrome.app %s'
chrome_path = ''
game_site_link = 'https://www.gamelink'

if user_OS == 'Windows':
    chrome_path = chrome_path_windows
elif user_OS == 'Linux':
    chrome_path = chrome_path_linux
elif user_OS == 'Darwin':
    chrome_path = chrome_path_mac
elif user_OS == 'Java':
    chrome_path = chrome_path_mac
else:
    webbrowser.open_new_tab(game_site_link)

webbrowser.get(chrome_path).open_new_tab(game_site_link) 

实际上我在此进行了一些更改,因为我仍在使用此启动器,因此已对其进行了更新

import time
import webbrowser
import platform
import subprocess
import os
import sys

privateServerLink = 'https://www.roblox.com/games/2414851778/TIER-20-Dungeon-Quest?privateServerLinkCode=GXVlmYh0Z7gwLPBf7H5FWk3ClTVesorY'
userBrowserC = input(str("Browser Type: chrome, opera, iexplore, firefox : "))
userSleepTime = int(input("How long do you want it to run?"))
if userBrowserC == 'opera':
    userBrowserD = 'launcher.exe'
else:
    userBrowserD = userBrowserC

if userBrowserC == "chrome":
    taskToKill = "chrome.exe"
else:
    taskToKill = "iexplore.exe"

if userBrowserC == 'chrome' and platform.system() == 'Windows':
     browserPath = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'
elif userBrowserC == 'chrome' and platform.system() == 'Linux':
    browserPath = '/usr/bin/google-chrome %s'
elif userBrowserC == 'chrome' and platform.system() == 'Darwin' or 
platform.system() == 'Java':
    browserPath = 'open -a /Applications/Google\ Chrome.app %s'
elif userBrowserC == 'opera' and platform.system() == 'Windows':
    browserPath = 'C:/Users/'+ os.getlogin() +'/AppData/Local/Programs/Opera/launcher.exe'
elif userBrowserC == 'iexplore' and platform.system() == 'Windows':
    browserPath = 'C:/Program Files/internet explorer/iexplore.exe %s'
elif userBrowserC == 'firefox' and platform.system() == 'Windows':
    browserPath = 'C:/Program Files/Mozilla Firefox/firefox.exe'
else:
    browserPath = ''
while 1 == 1:   
    subprocess.Popen('SynapseX.exe')
    time.sleep(7)
    webbrowser.get(browserPath).open_new_tab(privateServerLink)
    time.sleep(7)  
    os.system('taskkill /f /im '+taskToKill)
    time.sleep(userSleepTime)

答案 10 :(得分:0)

信不信由你这是最简单的方法

webbrowser.open("www.stackoverflow.com")#just remove https:// or http:// and simply add www.something.com

以这个网址为例

<块引用>

https://something.com

如果你给这个网址:https://something.com 或 something.com 它将在 IE 中打开

但是如果你这样输入:www.something.com 它将在 chrome 中打开

你可以试试这个,这会奏效!

注意:如果它有其他后缀,例如 take https://meet.google.com,例如,如果您尝试将 www. 添加到其中,您的浏览器将抛出拼写错误)

答案 11 :(得分:0)

当你有一个无效的 URL(确保 URL 以 https:// 或 http:// 开头,如果不是,添加它),它通常会打开默认的 IE。

答案 12 :(得分:0)

if sys.platform[:3] == "win":
    # First try to use the default Windows browser
    register("windows-default", WindowsDefault)

    # Detect some common Windows browsers, fallback to IE
    iexplore = os.path.join(os.environ.get("PROGRAMFILES", "C:\\Program Files"),
                            "Mozilla Firefox\\FIREFOX.EXE")
    for browser in ("firefox", "firebird", "seamonkey", "mozilla",
                    "netscape", "opera", iexplore):
        if shutil.which(browser):
            register(browser, None, BackgroundBrowser(browser))

100%工作。...请参阅行号535-545。.根据您的要求将iexplore的路径更改为firefox或Chrome。 在我的情况下,我在上面的代码中为Firefox设置更改了路径...

答案 13 :(得分:0)

我通过下面的@mehrdad的答案找到了自己的问题的答案。若要以通用方式从Windows查询浏览器路径,@ mehrdad提供了一个不错的简短代码,该代码使用Windows注册表,但没有包含足够的上下文来使其正常工作。

import os 
import winreg
import shlex

def try_find_chrome_path():
    result = None
    if winreg:
        for subkey in ['ChromeHTML\\shell\\open\\command', 'Applications\\chrome.exe\\shell\\open\\command']:
            try: result = winreg.QueryValue(winreg.HKEY_CLASSES_ROOT, subkey)
            except WindowsError: pass
            if result is not None:
                result_split = shlex.split(result, False, True)
                result = result_split[0] if result_split else None
                if os.path.isfile(result):
                    break
                result = None
    else:
        expected = "google-chrome" + (".exe" if os.name == 'nt' else "")
        for parent in os.environ.get('PATH', '').split(os.pathsep):
            path = os.path.join(parent, expected)
            if os.path.isfile(path):
                result = path
                break
    return result

print(try_find_chrome_path())

感谢答案@mehrdad !!

答案 14 :(得分:0)

如果您在Windows中设置了默认浏览器,则可以执行以下操作:

    open_google = webbrowser.get('windows-default').open('https://google.com')

答案 15 :(得分:0)

这是一种通向Chrome的强大方法。

(请注意,仅当您特别需要Chrome而不是默认浏览器,Chromium或其他工具时,才应该这样做。)

def try_find_chrome_path():
    result = None
    if _winreg:
        for subkey in ['ChromeHTML\\shell\\open\\command', 'Applications\\chrome.exe\\shell\\open\\command']:
            try: result = _winreg.QueryValue(_winreg.HKEY_CLASSES_ROOT, subkey)
            except WindowsError: pass
            if result is not None:
                result_split = shlex.split(result, False, True)
                result = result_split[0] if result_split else None
                if os.path.isfile(result):
                    break
                result = None
    else:
        expected = "google-chrome" + (".exe" if os.name == 'nt' else "")
        for parent in os.environ.get('PATH', '').split(os.pathsep):
            path = os.path.join(parent, expected)
            if os.path.isfile(path):
                result = path
                break
    return result

答案 16 :(得分:-1)

在Selenium中获取活动标签的URL,尝试

from selenium import webdriver

driver = webdriver.Firefox()
print driver.current_url # This will print the URL of the Active link

发送信号以更改选项卡

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)

并再次使用

print driver.current_url

我在这里只为您提供伪代码。

您可以将其置于循环中并创建自己的流程。

我是Stackoverflow的新手,所以还在学习如何写出正确的答案。

答案 17 :(得分:-1)

至少在Windows中它必须足够,你不必关心浏览器的路径。

import webbrowser

url = 'https://stackoverflow.com'

webbrowser.open(url)