在uni curser的工作过程中,我遇到了一个标准的Python模块
-WebBrowser 。 通过这个模块,我想用默认的浏览器实现语音助手的工作,但是一切都没有按预期的顺利进行。 让我们先告诉您这个模块是什么以及它通常如何工作。
WebBrowser是嵌入在Python中的模块,提供用于查看Web文档的高级界面。
首先,使用以下命令导入模块:
import webbrowser
现在可以选择如何打开链接。 有两把椅子:
1.一行编写:
webbrowser.open(url, new=0, autoraise=True)
例如:
webbrowser.open('https://vk.com', new=2)
如果new = 0,则URL将在同一浏览器窗口中打开(如果可能)。 如果变量new = 1,则如有可能,将打开一个新的浏览器窗口。 如果new = 2,则如有可能,将打开一个新的浏览器页面(“选项卡”)。
您可以放心地跳过autoraise值,因为它会在所有窗口的顶部打开浏览器,并且大多数现代浏览器都会吐出此变量,即使该变量为False也是如此。
2.不要忘记记住新参数并亲手写:
webbrowser.open_new(url)
如果可能,此设计将在新的
默认浏览器窗口中打开URL,否则,它将在单个浏览器窗口中打开URL。
webbrowser.open_new_tab(url)
在这种情况下,如果可能的话,默认情况下,URL将在新的浏览器页面(“选项卡”)上打开,否则等效于open_new()。
假设您不需要默认浏览器。 有一个很酷的.get()命令来选择浏览器
webbrowser.get(using=None)
粗略地说,您只需指出要使用的浏览器即可。
例如,在Google Chrome浏览器中打开新标签页:
webbrowser.get(using='google-chrome').open_new_tab('https://vk.com')
浏览器名称表:
但是,并非总是可以单独使用.get()来实现,在这种情况下,.register()函数可以解决问题,例如:
import webbrowser webbrowser.register('Chrome', None, webbrowser.BackgroundBrowser('C:\Program Files (x86)\Google\Chrome\Application\chrome.exe')) webbrowser.get('Chrome').open_new_tab('vk.com')
我们指定了Google Chrome浏览器的路径,并命名为该路径,现在所有链接仅在其中打开。 希望我们对WebBrowser模块进行了一些整理,现在让我们继续讨论我的小问题。
问题
如前所述,在课程项目中,我选择创建语音助手。 我想教他遵循链接并在搜索引擎中搜索信息。 当然,为此可以“填充”很多库,但是基本上我想通过标准
WebBrowser模块实现它。
由于大多数现代浏览器的链接输入行和搜索行都是相同的,因此您似乎可以简单地将请求传输到链接发送到的相同位置。
例如:
import webbrowser webbrowser.open_new_tab('https://vk.com') webbrowser.open_new_tab('')
根据此代码的逻辑,应打开两个选项卡:
- 网站vk.com
- 搜索引擎查询-苹果
但实际上,有两种不同的浏览器可以打开。 该链接由我们的默认浏览器打开,并且请求由Internet Explorer发出(尽管它花费Windows 10,但IE仍然是Edge而不是IE)。 该如何处理? 真正的专家可以进入WebBrowser模块本身并将其修复,但是我们将清醒地评估机会并顺其自然。
由于只允许在默认浏览器中打开链接,因此我们将仅打开链接。
解决步骤
- 我们在搜索引擎(Yandex,Google等)中进行搜索查询

- 我们得到了链接

- 而且,正如许多人已经猜到的那样,只需插入我们的链接,而无需在“ text =“
import webbrowser webbrowser.open_new_tab('https://vk.com') webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text=')
- 现在,您需要通过“ +”或“%s”添加查询文本本身
- 通过“ +”
webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text='+'')
- 通过“%”
webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text=%s'%'')
- 但是最好通过格式实现
webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text={}'.format(''))
现在,让用户输入链接或请求,程序本身就知道要使用哪种方法(调用该链接或将其插入到请求链接中)。
首先,我们了解到链接中包含域(.ru,.com等),在请求中通常不会终止(购买汽车,在线电影等),但在链接中空格键
因此,我们将在用户输入的内容中查找句点和空格。 我们可以通过re模块实现此目的,re模块也是Python内置的。 Python提供了两种不同的基于正则表达式的原始操作:
match在字符串的开头搜索模式,而
search搜索整个字符串。 我们将使用
搜索操作。
import webbrowser import re call = input(' : ') if re.search(r'\.', call): webbrowser.open_new_tab('https://' + call) elif re.search(r'\ ', call): webbrowser.open_new_tab('https://yandex.ru/search/?text='+call) else: webbrowser.open_new_tab('https://yandex.ru/search/?text=' + call)
我会解释一下代码。
用户将链接或请求文本输入到call变量中。
if re.search(r'\.', call): webbrowser.open_new_tab('https://' + call)
第一个条件检查call变量中是否有一个点。 字符'\'是必需的,否则模块将无法理解该字符之前是一个点。
elif re.search(r'\ ', call):
在这种情况下,一切都与第一个条件相同,但是已经在验证空间。 空格表示我们有一个搜索查询。
else: webbrowser.open_new_tab('https://yandex.ru/search/?text=' + call)
然后,
else依次分配用户在搜索查询中编写的所有内容(不带空格和句点)。
需要检查空间;否则,WebBrowser会打开Internet Explorer。
谢谢大家的关注! 我希望本文对某人有用。