Python编程让繁琐的工作自动化(6)-从web抓取信息

本文介绍如何使用Python的webbrowser模块一键打开Google地图定位地址,以及requests模块的高级用法,包括错误处理、状态码检查和文件下载保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

webbrowser:python自带的模块,打开浏览器获取指定页面
requests:从因特网上下载文件和网页
BeautifulSoup:解析HTML,即网页编写的格式
selenium:启动并控制一个Web浏览器,能够填写表单,并模拟鼠标在这个浏览器汇中点击

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

webbrowser 模块的 open()函数可以启动一个新浏览器,打开指定的 URL。在交
互式环境中输入以下代码:

>>> import webbrowser 
>>> webbrowser.open('http://inventwithpython.com/') 

Web 浏览器的选项卡将打开 URL http://inventwithpython.com/。这大概就是
webbrowser 模块能做的唯一的事情。既使如此,open()函数确实让一些有趣的事情成为可
能。例如,将一条街道的地址拷贝到剪贴板,并在 Google 地图上打开它的地图,这是很
繁琐的事。你可以让这个任务减少几步,写一个简单的脚本,利用剪贴板中的内容在浏
览器中自动加载地图。这样,你只要将地址拷贝到剪贴板,运行该脚本,地图就会加载。
你的程序需要做到:
• 从命令行参数或剪贴板中取得街道地址。
• 打开 Web 浏览器,指向该地址的 Google 地图页面。
这意味着代码需要做下列事情:
• 从 sys.argv 读取命令行参数。
• 读取剪贴板内容。
• 调用 webbrowser.open()函数打开外部浏览器。
打开一个新的文件编辑器窗口,将它保存为 mapIt.py

#你的目的是创建mapIt.py,然后使用命令行运行它时,如
C:\> mapit 870 Valencia St, San Francisco, CA 94110 
#该脚本将使用命令行参数,而不是剪贴板,如果没有命令行参数,程序就知道使用剪贴板的内容

# 第1步:在mapIt.py中处理命令行参数
#! 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:]) 
    # 第2步:处理剪贴板,加载浏览器
    else: 
    # Get address from clipboard. 
    address = pyperclip.paste() 
 
webbrowser.open('https://www.google.com/maps/place/' + address) 

类似程序的想法

只要你有一个 URL,webbrowser 模块就让用户不必打开浏览器,而直接加载一
个网站。其他程序可以利用这项功能完成以下任务:
• 在独立的浏览器标签中,打开一个页面中的所有链接。
• 用浏览器打开本地天气的 URL。
• 打开你经常查看的几个社交网站。

利用requests模块从Web下载文件

requests 模块让你很容易从 Web 下载文件,不必担心一些复杂的问题,诸如网
络错误、连接问题和数据压缩。编写 requests 模块是因为 Python 的 urllib2 模块用起来太复杂。

常用函数:

# 下载一个网页
import requests 
# 返回一个response对象
>>> res = requests.get('http://www.gutenberg.org/cache/epub/1112/pg1112.txt') 
>>> type(res) 
<class 'requests.models.Response'> 
# 检查状态码判断是否成功,ok的状态码是200,404代表没找到
>>> res.status_code == requests.codes.ok 
True 
>>> len(res.text) 
178981 
>>> print(res.text[:250]) 
The Project Gutenberg EBook of Romeo and Juliet, by William Shakespeare 
 
This eBook is for the use of anyone anywhere at no cost and with 
almost no restrictions whatsoever. You may copy it, give it away or 
re-use it under the terms of the Proje 

# 检查错误
# 检查成功有一种简单的方法,就是在 Response对象上调用 raise_for_status()方法。如果下载文件出错,这将抛出异常。如果下载成功,就什么也不做
>>> res = requests.get('http://inventwithpython.com/page_that_does_not_exist') 
>>> res.raise_for_status() 
Traceback (most recent call last): 
  File "<pyshell#138>", line 1, in <module> 
    res.raise_for_status() 
  File "C:\Python34\lib\site-packages\requests\models.py", line 773, in raise_for_status 
    raise HTTPError(http_error_msg, response=self) 
requests.exceptions.HTTPError: 404 Client Error: Not Found 
# 利用try和except语句将raise_for_status代码行包裹起来,处理这一错误,不让程序崩溃
import requests 
res = requests.get('http://inventwithpython.com/page_that_does_not_exist') 
try: 
    res.raise_for_status() 
except Exception as exc: 
    print('There was a problem: %s' % (exc)) 
# 将下载的文件保存到硬盘
# 使用标准的open和write函数将web页面保存到硬盘的一个文件,但是必须用写二进制模式打开文件,即使页面是纯文本的,目的是保存该文本的unicode编码。
# 使用for循环和response对象iter_content方法
>>> import requests 
>>> res = requests.get('http://www.gutenberg.org/cache/epub/1112/pg1112.txt') 
>>> res.raise_for_status() 
>>> playFile = open('RomeoAndJuliet.txt', 'wb') 
# iter_content()方法在循环的每次迭代中,返回一段内容。每一段都是 bytes 数据类型,你需要指定一段包含多少字节。
# 10 万字节通常是不错的选择,所以将 100000作为参数传递给 iter_content()。 
>>> for chunk in res.iter_content(100000): 
        playFile.write(chunk) # write()方法返回一个数字,表示写入文件的字节数。在前面的例子中,第一段包含 100000 个字节,文件剩下的部分只需要 78981 个字节。 
 
100000 
78981 
>>> playFile.close() 

HTML

因为基本上用不到解析网页的东西,所以暂时不记录这一部分内容,有需要可以网上找爬虫教程!

### 回答1: Python繁琐工作自动化第2版 是一本介绍如何使用 Python 编程语言来自动化繁琐工作的书籍。Python 是一种易于学习和使用的编程语言,它具有简洁而强大的语法,能够轻松处理各种任务。 这本书的第二版扩展了第一版的内容,提供了更多的示例和实用技巧,帮助读者更好地理解和应用 Python 自动化Python 编程可以帮助我们在处理繁琐任务时节省时间和精力。比如,在文档处理方面,可以使用 Python 自动化程序来批量处理文件,例如批量重命名文件、批量转换文件格式,甚至批量提取文本内容等。在数据处理方面,我们可以使用 Python 编程来读取、处理和分析大量的数据,自动生成结果报告或者图表。 此外,Python自动化能力也可以应用于网络操作。比如,可以使用 Python 程序来自动化网页抓取,实现数据的自动采集和分析。还可以使用 Python 编程实现自动发送邮件、自动登录网站等。 总之,Python繁琐工作自动化第2版 是一本有关 Python 自动化编程的实用书籍,它通过大量的示例和案例,帮助读者学会使用 Python 编程语言解决各种繁琐任务。使用 Python 编程语言,我们能够更高效地处理繁琐工作,节省时间和精力,提高工作效率。 ### 回答2: 《Python繁琐工作自动化第2版》是一本介绍如何使用Python语言进行自动化工作的教材。Python作为一种高级编程语言,有着简洁、易读、易学的特点,非常适合用于编写自动化脚本。 这本书主要教读者如何使用Python去解决繁琐重复性工作。通过学习Python基础知识和相关库、模块的应用,读者能够编写脚本来完成一些常规操作,例如文件处理、数据分析、网页爬取等任务。这样可以极大地提高工作效率,减少人为的错误和时间浪费。 书中首先介绍了Python语言的基础概念和语法,帮助读者快速入门。然后,通过具体实例和案例,一步一步讲解如何利用Python编写自动化脚本。读者将学会使用Python处理文件和文件夹、读写Excel和CSV文件、操作数据库、发送电子邮件等。 此外,书中还涵盖了更高级的内容,如如何自动化网页操作、使用Python进行数据分析和可视化、利用Python技术进行网络爬虫等。这对于那些希望进一步深入学习和应用Python的读者来说非常有用。 总而言之,《Python繁琐工作自动化第2版》以简明易懂的语言,通俗易懂的案例来讲解自动化脚本的编写,使读者能够快速上手,提高工作效率,减少重复性劳动。这本书对于那些希望利用Python进行工作自动化的人士来说,是一本不可或缺的读物。 ### 回答3: 《Python繁琐工作自动化第2版》是一本关于使用Python编程语言来自动化处理繁琐工作的书籍。Python是一种功能强大且易于学习的编程语言,它具有丰富的库和工具,使得编写自动化脚本变得更加简单和高效。 这本书提供了详细的指导和实例,教读者如何使用Python来处理各种常见的繁琐工作。它涵盖了许多方面的自动化,如文件和文件夹操作、Excel数据处理、PDF操作、Web数据提取、自动发送电子邮件等等。通过学习本书,读者将能够掌握Python编程的基本知识,并学会如何将其应用于实际场景中。 其中,针对《Python繁琐工作自动化第2版》中提到的PDF操作,读者将学习如何使用Python来读取、编辑和生成PDF文件。这对于经常处理PDF文档的工作人员来说尤为重要。使用Python,可以轻松地从PDF中提取文本、图像和表格数据。还可以通过Python来合并、拆分和重命名PDF文件,进行文件的批量处理。另外,利用Python的PDF库,还可以对PDF进行进一步的自定义处理,如添加水印、加密和解密、页面旋转等。 总而言之,《Python繁琐工作自动化第2版》为读者提供了一种利用Python编程语言来自动化处理各种繁琐工作的方法和技巧。通过学习本书,读者能够节省大量的时间和精力,提高工作效率,提升自己在数字化时代的竞争力。无论是对于初学者还是有一定编程基础的人来说,本书都是一本值得推荐的实用指南。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值