0
点赞
收藏
分享

微信扫一扫

python-webbrowser.py 浏览器快捷控制器(及应用补充)

爱情锦囊 2022-09-19 阅读 153

从来没有翻译过技术文档,今天花了两小时翻译了下python的​​webbrowser​​ — Convenient Web-browser controller(网上搜了下好像没人翻译过);也算是一种尝试吧,内容里面肯定有些不规范的地方,或许有些名字早就有通用的名字了,因为我不知道导致翻译出来不准确;暂且不管是否完全对吧,以后有机会再来修改。另外,有些简单的地方也省略翻译了。

官方文档:http://docs.python.org/2.7/library/webbrowser.html?highlight=webbrowser.open#webbrowser.open

译文如下:

webbrowser 浏览器快捷控制器

浏览器模块​​webbrowser ​​module给用户提供了一个可以显示基于web文档的高级接口。在这种方式下,简单的调用该模块的open()函数可以完成很多任务。

在Unix下,图形化浏览器一般趋于在X11下使用,但是如果在图形化浏览器不可用或X11显示不可用的情况下,一般会采用文本模式浏览器;在使用文本浏览器时,除非用户退出浏览器,否则调用进程会一直被阻止。

如果存在有使用环境变量的浏览器,它会被编译成覆盖对应默认平台的一系列浏览器,然后作为一系列单独的 ​​ os.pathsep​​ 浏览器来逐一尝试。当列表内容含有%s字符串时,它将被编译成使用URL参数而非%s的方式来通过文本浏览器命令行使用;反之,不含有的%s话,它就简单解释成启动浏览器的名字。

对于非Unix平台或者在一个远程浏览器可用的Unix机器上,控制程序将不会等待用户浏览器使用结束,但是会让远程浏览器显示并保持它的窗口状态;如果远程在Unix平台上不可用,控制程序会重新调用浏览器并等待到结束。

Webbrowser 模块可以通过调用命令行接口来使用。它可以设置URL为对应参数。它还可以接收如下可选参数:

-n 如果允许则在新浏览器窗口中打开该URL地址

-t (tab)在浏览器的新标签页中打开该URL;

通过以上选项当然可以使用如下,如:

(在命令行中)

python -m webbrowser -t "http://www.python.org"  # 注意:-m 非讨论的参数,而是python运行的一种模式

C:\Users\lijy>python -m webbrowser -t "http://www.python.org"


C:\Users\lijy>

直接在已打开的firefox新标签页中打开了www.python.org



exception错误定义如下:



exception

webbrowser. Error

Exception raised when a browser control error occurs.

当发生错误是,给出exception报错;

其它相关函数定义如下:

webbrowser.open(url, new=0, autoraise=True)

启用默认浏览器打开URL,

如果new=0,如果允许则在同一窗口中打开该URL;

如果new=1,如果允许则在新窗口中打开该地址;

如果new=2,如果允许则在新标签页中打开该地址;

如果autoraise 是true,如果允许会自动启动窗口(注意不管变量如何设置,这在许多窗口管理器中都会执行)

>>> webbrowser.open_new('www.baidu.com',new=2,autoraise=True)

Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
webbrowser.open_new('www.baidu.com',new=2,autoraise=True)
TypeError: open_new() got an unexpected keyword argument 'new'
>>> webbrowser.open('www.baidu.com',new=2,autoraise=True)
True

前者报错,后者直接打开了百度;


webbrowser.
open_new
(
url
)


启用默认浏览器在一个新标签页中打开该URL,否则,在一个新窗口中单独打开该地址;

webbrowser.open_new_tab(url)

以默认浏览器(“tab”)的新标签页打开该地址,有时和open_new()等效;

webbrowser.get([name])

对该浏览器类型名返回一个控件对象。如果为空,则返回一个最接近调用环境的默认浏览器控件。

webbrowser.register(name, constructor[, instance])

登记浏览器类型名。一旦浏览器类型被记录,get()函数可以对对应的浏览器类型返回一个控件。如果没有给出instance参数或者为空,必要时构造器将在没有参数的情况下被调用来创建一个instance。如果instance已给出或为none,构造器将不会被调用。

这些切入点只有在你计划设置浏览器变量或使用一个非空参数匹配你声明的处理程序名调用get()时才会有效。

许多浏览器类型已预定义如下表,

Type Name

Class Name

Notes

'mozilla'

Mozilla('mozilla')

 

'firefox'

Mozilla('mozilla')

 

'netscape'

Mozilla('netscape')

 

'galeon'

Galeon('galeon')

 

'epiphany'

Galeon('epiphany')

 

'skipstone'

BackgroundBrowser('skipstone')

 

'kfmclient'

Konqueror()

(1)

'konqueror'

Konqueror()

(1)

'kfm'

Konqueror()

(1)

'mosaic'

BackgroundBrowser('mosaic')

 

'opera'

Opera()

 

'grail'

Grail()

 

'links'

GenericBrowser('links')

 

'elinks'

Elinks('elinks')

 

'lynx'

GenericBrowser('lynx')

 

'w3m'

GenericBrowser('w3m')

 

'windows-default'

WindowsDefault

(2)

'macosx'

MacOSX('default')

(3)

'safari'

MacOSX('safari')

(3)

Notes:

  1. “Konqueror” is the file manager for the KDE desktop environment for Unix, andonly makes sense to use if KDE is running. Some way of reliably detecting KDEwould be nice; theKDEDIR variable is not sufficient. Note also thatthe name “kfm” is used even when using thekonquerorcommand with KDE2 — the implementation selects the best strategy for running Konqueror.
  2. Only on Windows platforms.
  3. Only on Mac OS X platform.

使用举例:

>>> import webbrowser
>>> webbrowser.open_new('www.baidu.com')
True

结果:在已打开的浏览器firefox窗口的新标签页中打开了百度;

>>> webbrowser.get()
<webbrowser.WindowsDefault object at 0x01EB81D0>
>>> webbrowser.get()
<webbrowser.WindowsDefault object at 0x01EB85F0>


2013-11-15

再次遇到了webbrowser这个模块,不过这次有一个实际应用:刷新博客,增加访问量(部分网页不可用,比如csdn,统计机制不一样)。

!/bin/env python

import webbrowser as web
import os, time

url = 'http://weibo.com/u/2491543131/home?topnav=1&wvr=5'
i = 0


def open_web(url):
web.open_new_tab(url)


while i < 5:
i = i + 1
open_web(url)
time.sleep(5)

else:
task = 'killall firefox'
os.system(task)
time.sleep(10)

这个主要实现了打开5个url的标签页,然后关掉浏览器的功能。

其中可以改进和涉及的有进程的产生和关闭,os.system可以用subprocess来替代。





举报

相关推荐

0 条评论