python练习项目七——利用webbrowser 模块的mapIt.py

项目:利用webbrowser 模块的mapIt.py

背景

webbrowser 模块的open()函数可以启动一个新浏览器,打开指定的URL。
既使如此,open()函数确实让一些有趣的事情成为可能。例如,将一条街道的地址拷贝到剪贴板,并在Google 地图上打开它的地图,这是很繁琐的事。你可以让这个任务减少几步,写一个简单的脚本,利用剪贴板中的内容在浏览器中自动加载地图。这样,你只要将地址拷贝到剪贴板,运行该脚本,地图就会加载。

参考思路

① 从命令行参数或剪贴板中取得街道地址。
② 打开Web 浏览器,指向该地址的Google 地图页面。

这意味着代码需要做下列事情:

  • 从sys.argv 读取命令行参数。
  • 读取剪贴板内容。
  • 调用webbrowser.open()函数打开外部浏览器。

第1 步:弄清楚URL
在这里插入图片描述该脚本将使用命令行参数,而不是剪贴板。如果没有命令行参数,程序就知道要使用剪贴板的内容。
首先你需要弄清楚,对于指定的街道地址,要使用怎样的URL。

地址就在URL 中,但其中还有许多附加的文本。网站常常在URL 中添加额外的数据,帮助追踪访问者或定制网站。但如果你尝试使用https://www.google.com/maps/place/870+Valencia+St+San+Francisco+CA/,会发现仍然可以到达正确的页面。所以你的程序可以设置为打开一个浏览器,访问’https://www.google.com/maps/place/your_address_string’(其中your_address_string 是想查看地图的地址)

第2 步:处理命令行参数

#! python3
# mapIt.py - Launches a map in the browser using an address from the
# command line or clipboard.

import webbrowser, sys
if len(sys.argv) > 1:
	# Get address from command line.
	address = ' '.join(sys.argv[1:])
# TODO: Get address from clipboard.

如果这个列表中不只有文件名,那么len(sys.argv)的返回值就会大于1,这意味着确实提供了命令行参数。
命令行参数通常用空格分隔,但在这个例子中,你希望将所有参数解释为一个字符串。因为sys.argv 是字符串的列表,所以你可以将它传递给join()方法,这将返回一个字符串。你不希望程序的名称出现在这个字符串中,所以不是使用sys.argv,而是使用sys.argv[1:],砍掉这个数组的第一个元素。

在这里插入图片描述第3 步:处理剪贴板内容,加载浏览器

#! python3
# mapIt.py - Launches a map in the browser using an address from the
# command line or clipboard.

import webbrowser, sys, pyperclip
if len(sys.argv) > 1:
	# Get address from command line.
	address = ' '.join(sys.argv[1:])
else:
	# Get address from clipboard.
	address = pyperclip.paste()
webbrowser.open('https://www.google.com/maps/place/' + address)

第4 步:类似程序的想法

只要你有一个URL,webbrowser 模块就让用户不必打开浏览器,而直接加载一个网站。其他程序可以利用这项功能完成以下任务:

  • 在独立的浏览器标签中,打开一个页面中的所有链接
  • 用浏览器打开本地天气的URL
  • 打开你经常查看的几个社交网站
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值