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

2024-05-06 20:08

本文主要是介绍Python编程让繁琐的工作自动化(6)-从web抓取信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

这篇关于Python编程让繁琐的工作自动化(6)-从web抓取信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965251

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre