mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 23:14:06 +08:00
9 lines
21 KiB
HTML
9 lines
21 KiB
HTML
<div class="body" role="main"><div class="section" id="module-webbrowser"><h1><span class="yiyi-st" id="yiyi-10">21.1. <a class="reference internal" href="#module-webbrowser" title="webbrowser: Easy-to-use controller for Web browsers."><code class="xref py py-mod docutils literal"><span class="pre">webbrowser</span></code></a> — 方便的浏览器操作库</span></h1><p><span class="yiyi-st" id="yiyi-11"><strong>源代码:</strong> <a class="reference external" href="https://hg.python.org/cpython/file/3.5/Lib/webbrowser.py">Lib / webbrowser.py</a></span></p><p><span class="yiyi-st" id="yiyi-12"><a class="reference internal" href="#module-webbrowser" title="webbrowser: Easy-to-use controller for Web browsers."><code class="xref py py-mod docutils literal"><span class="pre">webbrowser</span></code></a> 模块提供了一个可以向用户展示Web文档的高级接口。</span><span class="yiyi-st" id="yiyi-13">在绝大多数情况下,使用本模块的<a class="reference internal" href="#webbrowser.open" title="webbrowser.open"><code class="xref py py-func docutils literal"><span class="pre">open()</span></code></a> 函数即可。</span></p><p><span class="yiyi-st" id="yiyi-14">在Unix环境下,图形浏览器通常依赖 X11,当图形浏览器不可用或X11不可用时,文本模式的浏览器就派上用场了。</span><span class="yiyi-st" id="yiyi-15">如果使用文本模式的浏览器,则调用进程将阻塞直到用户退出浏览器(译注:本句需要更易于理解的翻译)。</span></p><p><span class="yiyi-st" id="yiyi-16">如果环境变量<span class="target" id="index-0"></span><code class="xref std std-envvar docutils literal"><span class="pre">BROWSER</span></code>存在,它被解释为<a class="reference internal" href="os.html#os.pathsep" title="os.pathsep"><code class="xref py py-data docutils literal"><span class="pre">os.pathsep</span></code></a>-separated list of browsers to try ahead of the platform defaults.</span><span class="yiyi-st" id="yiyi-17">当列表部分的值包含字符串<code class="docutils literal"><span class="pre">%s</span></code>时,它被解释为要与参数URL替换为<code class="docutils literal"><span class="pre">%s</span></code>一起使用的字面值浏览器命令行;如果该部分不包含<code class="docutils literal"><span class="pre">%s</span></code>,它只是被解释为要启动的浏览器的名称。</span><span class="yiyi-st" id="yiyi-18"><a class="footnote-reference" href="#id2" id="id1">[1]</a></span></p><p><span class="yiyi-st" id="yiyi-19">对于非Unix平台,或当Unix上有远程浏览器时,控制进程不会等待用户完成浏览器,但允许远程浏览器在显示器上保持自己的窗口。</span><span class="yiyi-st" id="yiyi-20">如果远程浏览器在Unix上不可用,则控制进程将启动一个新的浏览器并等待。</span></p><p><span class="yiyi-st" id="yiyi-21">脚本<strong class="program">webbrowser</strong> 可以用作命令行接口。</span><span class="yiyi-st" id="yiyi-22">它接受 URL 作为参数。</span><span class="yiyi-st" id="yiyi-23">它也接受如下可选参数:<code class="docutils literal"><span class="pre">-n</span></code> 如果可以,在新浏览器窗口打开URL; <code class="docutils literal"><span class="pre">-t</span></code> 在浏览器新标签页(TAB)打开URL。</span><span class="yiyi-st" id="yiyi-24">当然,这两个选项是互斥的,不可共存。</span><span class="yiyi-st" id="yiyi-25">用法示例︰</span></p><pre><code class="language-python"><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">webbrowser</span> <span class="o">-</span><span class="n">t</span> <span class="s2">"http://www.python.org"</span>
|
||
</code></pre><p><span class="yiyi-st" id="yiyi-26">异常定义:</span></p><dl class="exception"><dt id="webbrowser.Error"><span class="yiyi-st" id="yiyi-27"> <em class="property">exception </em><code class="descclassname">webbrowser.</code><code class="descname">Error</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-28">浏览器控制引发的异常。</span></p></dd></dl><p><span class="yiyi-st" id="yiyi-29">可用函数:</span></p><dl class="function"><dt id="webbrowser.open"><span class="yiyi-st" id="yiyi-30"> <code class="descclassname">webbrowser.</code><code class="descname">open</code><span class="sig-paren">(</span><em>url</em>, <em>new=0</em>, <em>autoraise=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-31">调用默认浏览器打开 <em>url</em> 。</span><span class="yiyi-st" id="yiyi-32">如果<em>new</em>参数为0,将尽可能在同一个浏览器窗口打开 <em>url</em>。</span><span class="yiyi-st" id="yiyi-33">如果<em>new</em>参数为1,将使用新的浏览器窗口打开指定url。</span><span class="yiyi-st" id="yiyi-34">如果 <em>new</em>参数为2,则使用新浏览器标签页(TAB)打开。</span><span class="yiyi-st" id="yiyi-35">如果<em>autoraise</em>是<code class="docutils literal"><span class="pre">True</span></code>,则窗口会被调用(请注意,在许多窗口管理器下,不管此变量的设置如何)。</span></p><p><span class="yiyi-st" id="yiyi-36">请注意,在某些平台上,尝试使用此函数打开文件名,可能会工作并启动操作系统的关联程序。</span><span class="yiyi-st" id="yiyi-37">但是,这既不支持也不便携。</span></p></dd></dl><dl class="function"><dt id="webbrowser.open_new"><span class="yiyi-st" id="yiyi-38"> <code class="descclassname">webbrowser.</code><code class="descname">open_new</code><span class="sig-paren">(</span><em>url</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-39">如果可能,在默认浏览器的新窗口中打开<em>url</em>,否则,在唯一的浏览器窗口中打开<em>url</em>。</span></p></dd></dl><dl class="function"><dt id="webbrowser.open_new_tab"><span class="yiyi-st" id="yiyi-40"> <code class="descclassname">webbrowser.</code><code class="descname">open_new_tab</code><span class="sig-paren">(</span><em>url</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-41">如果可能,在默认浏览器的新页面(“标签”)中打开<em>url</em>,否则等效于<a class="reference internal" href="#webbrowser.open_new" title="webbrowser.open_new"><code class="xref py py-func docutils literal"><span class="pre">open_new()</span></code></a></span></p></dd></dl><dl class="function"><dt id="webbrowser.get"><span class="yiyi-st" id="yiyi-42"> <code class="descclassname">webbrowser.</code><code class="descname">get</code><span class="sig-paren">(</span><em>using=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-43">使用返回浏览器类型<em>的控制器对象。</em></span><span class="yiyi-st" id="yiyi-44">如果<em>使用</em>为<code class="docutils literal"><span class="pre">None</span></code>,则返回适用于调用方环境的默认浏览器的控制器。</span></p></dd></dl><dl class="function"><dt id="webbrowser.register"><span class="yiyi-st" id="yiyi-45"> <code class="descclassname">webbrowser.</code><code class="descname">register</code><span class="sig-paren">(</span><em>name</em>, <em>constructor</em>, <em>instance=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-46">注册浏览器类型<em>名称</em>。</span><span class="yiyi-st" id="yiyi-47">一旦注册了浏览器类型,<a class="reference internal" href="#webbrowser.get" title="webbrowser.get"><code class="xref py py-func docutils literal"><span class="pre">get()</span></code></a>函数可以返回该浏览器类型的控制器。</span><span class="yiyi-st" id="yiyi-48">如果未提供<em>实例</em>或者<code class="docutils literal"><span class="pre">None</span></code>,则会调用<em>构造函数</em>,而无需创建实例。</span><span class="yiyi-st" id="yiyi-49">如果提供<em>实例</em>,则<em>构造函数</em>将永远不被调用,并且可以是<code class="docutils literal"><span class="pre">None</span></code>。</span></p><p><span class="yiyi-st" id="yiyi-50">此入口点仅在计划设置<span class="target" id="index-1"></span> <code class="xref std std-envvar docutils literal"><span class="pre">BROWSER</span></code>变量或调用<a class="reference internal" href="#webbrowser.get" title="webbrowser.get"><code class="xref py py-func docutils literal"><span class="pre">get()</span></code></a>时使用非空参数匹配处理程序。</span></p></dd></dl><p><span class="yiyi-st" id="yiyi-51">预定义了多种浏览器类型。</span><span class="yiyi-st" id="yiyi-52">该表给出可以传递到<a class="reference internal" href="#webbrowser.get" title="webbrowser.get"><code class="xref py py-func docutils literal"><span class="pre">get()</span></code></a>函数的类型名称以及控制器类的对应实例化,这些都在本模块中定义。</span></p><table border="1" class="docutils"><thead valign="bottom"><tr class="row-odd"><th class="head"><span class="yiyi-st" id="yiyi-53">类型名称</span></th><th class="head"><span class="yiyi-st" id="yiyi-54">类名称</span></th><th class="head"><span class="yiyi-st" id="yiyi-55">备注</span></th></tr></thead><tbody valign="top"><tr class="row-even"><td><span class="yiyi-st" id="yiyi-56"><code class="docutils literal"><span class="pre">'mozilla'</span></code></span></td><td><span class="yiyi-st" id="yiyi-57"><code class="xref py py-class docutils literal"><span class="pre">Mozilla('mozilla')</span></code></span></td><td></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-58"><code class="docutils literal"><span class="pre">'firefox'</span></code></span></td><td><span class="yiyi-st" id="yiyi-59"><code class="xref py py-class docutils literal"><span class="pre">Mozilla('mozilla')</span></code></span></td><td></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-60"><code class="docutils literal"><span class="pre">'netscape'</span></code></span></td><td><span class="yiyi-st" id="yiyi-61"><code class="xref py py-class docutils literal"><span class="pre">Mozilla('netscape')</span></code></span></td><td></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-62"><code class="docutils literal"><span class="pre">'galeon'</span></code></span></td><td><span class="yiyi-st" id="yiyi-63"><code class="xref py py-class docutils literal"><span class="pre">Galeon('galeon')</span></code></span></td><td></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-64"><code class="docutils literal"><span class="pre">'epiphany'</span></code></span></td><td><span class="yiyi-st" id="yiyi-65"><code class="xref py py-class docutils literal"><span class="pre">Galeon('epiphany')</span></code></span></td><td></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-66"><code class="docutils literal"><span class="pre">'skipstone'</span></code></span></td><td><span class="yiyi-st" id="yiyi-67"><code class="xref py py-class docutils literal"><span class="pre">BackgroundBrowser('skipstone')</span></code></span></td><td></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-68"><code class="docutils literal"><span class="pre">'kfmclient'</span></code></span></td><td><span class="yiyi-st" id="yiyi-69"><code class="xref py py-class docutils literal"><span class="pre">Konqueror()</span></code></span></td><td><span class="yiyi-st" id="yiyi-70">(1)</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-71"><code class="docutils literal"><span class="pre">'konqueror'</span></code></span></td><td><span class="yiyi-st" id="yiyi-72"><code class="xref py py-class docutils literal"><span class="pre">Konqueror()</span></code></span></td><td><span class="yiyi-st" id="yiyi-73">(1)</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-74"><code class="docutils literal"><span class="pre">'kfm'</span></code></span></td><td><span class="yiyi-st" id="yiyi-75"><code class="xref py py-class docutils literal"><span class="pre">Konqueror()</span></code></span></td><td><span class="yiyi-st" id="yiyi-76">(1)</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-77"><code class="docutils literal"><span class="pre">'mosaic'</span></code></span></td><td><span class="yiyi-st" id="yiyi-78"><code class="xref py py-class docutils literal"><span class="pre">BackgroundBrowser('mosaic')</span></code></span></td><td></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-79"><code class="docutils literal"><span class="pre">'opera'</span></code></span></td><td><span class="yiyi-st" id="yiyi-80"><code class="xref py py-class docutils literal"><span class="pre">Opera()</span></code></span></td><td></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-81"><code class="docutils literal"><span class="pre">'grail'</span></code></span></td><td><span class="yiyi-st" id="yiyi-82"><code class="xref py py-class docutils literal"><span class="pre">Grail()</span></code></span></td><td></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-83"><code class="docutils literal"><span class="pre">'links'</span></code></span></td><td><span class="yiyi-st" id="yiyi-84"><code class="xref py py-class docutils literal"><span class="pre">GenericBrowser('links')</span></code></span></td><td></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-85"><code class="docutils literal"><span class="pre">'elinks'</span></code></span></td><td><span class="yiyi-st" id="yiyi-86"><code class="xref py py-class docutils literal"><span class="pre">Elinks('elinks')</span></code></span></td><td></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-87"><code class="docutils literal"><span class="pre">'lynx'</span></code></span></td><td><span class="yiyi-st" id="yiyi-88"><code class="xref py py-class docutils literal"><span class="pre">GenericBrowser('lynx')</span></code></span></td><td></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-89"><code class="docutils literal"><span class="pre">'w3m'</span></code></span></td><td><span class="yiyi-st" id="yiyi-90"><code class="xref py py-class docutils literal"><span class="pre">GenericBrowser('w3m')</span></code></span></td><td></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-91"><code class="docutils literal"><span class="pre">'windows-default'</span></code></span></td><td><span class="yiyi-st" id="yiyi-92"><code class="xref py py-class docutils literal"><span class="pre">WindowsDefault</span></code></span></td><td><span class="yiyi-st" id="yiyi-93">(2)</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-94"><code class="docutils literal"><span class="pre">'macosx'</span></code></span></td><td><span class="yiyi-st" id="yiyi-95"><code class="xref py py-class docutils literal"><span class="pre">MacOSX('default')</span></code></span></td><td><span class="yiyi-st" id="yiyi-96">(3)</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-97"><code class="docutils literal"><span class="pre">'safari'</span></code></span></td><td><span class="yiyi-st" id="yiyi-98"><code class="xref py py-class docutils literal"><span class="pre">MacOSX('safari')</span></code></span></td><td><span class="yiyi-st" id="yiyi-99">(3)</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-100"><code class="docutils literal"><span class="pre">'google-chrome'</span></code></span></td><td><span class="yiyi-st" id="yiyi-101"><code class="xref py py-class docutils literal"><span class="pre">Chrome('google-chrome')</span></code></span></td><td></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-102"><code class="docutils literal"><span class="pre">'chrome'</span></code></span></td><td><span class="yiyi-st" id="yiyi-103"><code class="xref py py-class docutils literal"><span class="pre">Chrome('chrome')</span></code></span></td><td></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-104"><code class="docutils literal"><span class="pre">'chromium'</span></code></span></td><td><span class="yiyi-st" id="yiyi-105"><code class="xref py py-class docutils literal"><span class="pre">Chromium('chromium')</span></code></span></td><td></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-106"><code class="docutils literal"><span class="pre">'chromium-browser'</span></code></span></td><td><span class="yiyi-st" id="yiyi-107"><code class="xref py py-class docutils literal"><span class="pre">Chromium('chromium-browser')</span></code></span></td><td></td></tr></tbody></table><p><span class="yiyi-st" id="yiyi-108">备注:</span></p><ol class="arabic simple"><li><span class="yiyi-st" id="yiyi-109">“Konqueror”是Unix的KDE桌面环境的文件管理器,只有在KDE正在运行时才有意义。</span><span class="yiyi-st" id="yiyi-110">一些可靠的检测KDE的方法会很好; <span class="target" id="index-2"></span> <code class="xref std std-envvar docutils literal"><span class="pre">KDEDIR</span></code>变量不足。</span><span class="yiyi-st" id="yiyi-111">还要注意,即使在使用带有KDE 2的<strong class="program">konqueror</strong>命令时也使用名称“kfm” - 实现选择了运行Konqueror的最佳策略。</span></li><li><span class="yiyi-st" id="yiyi-112">仅在Windows平台上。</span></li><li><span class="yiyi-st" id="yiyi-113">仅在Mac OS X平台上。</span></li></ol><div class="versionadded"><p><span class="yiyi-st" id="yiyi-114"><span class="versionmodified">版本3.3中的新功能:</span>已添加对Chrome / Chromium的支持。</span></p></div><p><span class="yiyi-st" id="yiyi-115">这里有一些简单的例子:</span></p><pre><code class="language-python"><span></span><span class="n">url</span> <span class="o">=</span> <span class="s1">'http://docs.python.org/'</span>
|
||
|
||
<span class="c1"># Open URL in a new tab, if a browser window is already open.</span>
|
||
<span class="n">webbrowser</span><span class="o">.</span><span class="n">open_new_tab</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Open URL in new window, raising the window if possible.</span>
|
||
<span class="n">webbrowser</span><span class="o">.</span><span class="n">open_new</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
|
||
</code></pre><div class="section" id="browser-controller-objects"><h2><span class="yiyi-st" id="yiyi-116">21.1.1. </span><span class="yiyi-st" id="yiyi-117">Browser Controller Objects</span></h2><p><span class="yiyi-st" id="yiyi-118">浏览器控制器提供了这些方法,它们并行了三个模块级的便利功能:</span></p><dl class="method"><dt id="webbrowser.controller.open"><span class="yiyi-st" id="yiyi-119"> <code class="descclassname">controller.</code><code class="descname">open</code><span class="sig-paren">(</span><em>url</em>, <em>new=0</em>, <em>autoraise=True</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-120">使用此控制器处理的浏览器显示<em>url</em>。</span><span class="yiyi-st" id="yiyi-121">如果<em>new</em>为1,则尽可能打开新的浏览器窗口。</span><span class="yiyi-st" id="yiyi-122">如果<em>new</em>为2,则尽可能打开新的浏览器页面(“选项卡”)。</span></p></dd></dl><dl class="method"><dt id="webbrowser.controller.open_new"><span class="yiyi-st" id="yiyi-123"> <code class="descclassname">controller.</code><code class="descname">open_new</code><span class="sig-paren">(</span><em>url</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-124">如果可能,在此控制器处理的浏览器的新窗口中打开<em>url</em>,否则在唯一的浏览器窗口中打开<em>url</em>。</span><span class="yiyi-st" id="yiyi-125">别名<a class="reference internal" href="#webbrowser.open_new" title="webbrowser.open_new"><code class="xref py py-func docutils literal"><span class="pre">open_new()</span></code></a>。</span></p></dd></dl><dl class="method"><dt id="webbrowser.controller.open_new_tab"><span class="yiyi-st" id="yiyi-126"> <code class="descclassname">controller.</code><code class="descname">open_new_tab</code><span class="sig-paren">(</span><em>url</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-127">如果可能,在此控制器处理的浏览器的新页面(“标签”)中打开<em>url</em>,否则等效于<a class="reference internal" href="#webbrowser.open_new" title="webbrowser.open_new"><code class="xref py py-func docutils literal"><span class="pre">open_new()</span></code></a></span></p></dd></dl><p class="rubric"><span class="yiyi-st" id="yiyi-128">脚注</span></p><table class="docutils footnote" frame="void" id="id2" rules="none"><tbody valign="top"><tr><td class="label"><span class="yiyi-st" id="yiyi-129"><a class="fn-backref" href="#id1">[1]</a></span></td><td><span class="yiyi-st" id="yiyi-130">将在<span class="target" id="index-3"></span> <code class="xref std std-envvar docutils literal"><span class="pre">PATH</span></code></span></td></tr></tbody></table></div></div></div> |