24-第3步_针对每个结果打开Web浏览器
第3步:针对每个结果打开Web浏览器
最后,我们将告诉程序,针对结果打开Web浏览器标签页。将下面的内容添加到程序的末尾:
#! python3
# searchpypi.py - Opens several search results.
import requests, sys, webbrowser, bs4
--snip--
# Open a browser tab for each result.
linkElems = soup.select('.package-snippet')
numOpen = min(5, len(linkElems))
for i in range(numOpen):
urlToOpen = 'https://' + linkElems[i].get('href')
print('Opening', urlToOpen)
webbrowser.open(urlToOpen)
在默认情况下,你会使用 webbrowser
模块以在新的标签页中打开前5个查询结果。但是,用户查询的主题可能少于5个查询结果。 soup.select()
调用返回一个列表,该列表包含匹配 '.r a'
选择器的所有元素,因此打开标签页的数目要么是5,要么是这个列表的长度(取决于哪一个更小)。
内置的Python函数 min()
返回传入的整型或浮点型参数中最小的一个(也有内置的 max()
函数,返回传入的参数中最大的一个)。你可以使用 min()
弄清楚该列表中的链接是否少于5个,并且将要打开的链接数保存在变量 numOpen
中。然后可以调用 range(numOpen)
来执行一个 for
循环。
在该循环的每次迭代中,你会使用 webbrowser.open()
在Web浏览器中打开一个新的标签页。请注意,返回的 <a>
元素的 href
属性中不包含初始的Google网址部分,因此必须连接它和 href
属性的字符串。
现在可以马上打开前5个PyPI查找结果,例如,要查找 boring stuff
,你只要在命令行中运行 searchpypi boring stuff!
(了解如何在你的操作系统中方便地运行程序,请参看附录B)。