当前位置:首页 > 资讯 > 正文

【Python爬虫开发基础⑦】urllib库的基本使用

【Python爬虫开发基础⑦】urllib库的基本使用

专栏:python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~
往期推荐
【Python爬虫开发基础①】Python基础(变量及其命名规范)
【Python爬虫开发基础②】Python基础(正则表达式)
【Python爬虫开发基础③】Python基础(文件操作方法汇总)
【Python爬虫开发基础④】爬虫原理
【Python爬虫开发基础⑤】HTML页面构成概述
【Python爬虫开发基础⑥】计算机网络基础(Web和HTTP)
上一篇文章已经介绍了爬虫基础中用到的计算机网络的部分,本篇文章来小试牛刀,说一下爬虫用到的第一个库urllib



urllib是Python标准库中的一个模块,用于处理URL(Uniform Resource Locator)相关的操作。它提供了一系列函数和类,方便开发人员在Python程序中进行URL请求、数据获取、参数编码等操作。
urllib库包含四个子模块:urllib.request、urllib.parse、urllib.error和urllib.robotparser

通过urllib库,开发人员可以实现从网络上获取数据、发送HTTP请求、处理URL等功能。它是进行Web开发和网络爬虫编程时常用的工具之一,为Python程序提供了方便和灵活性。


urllib.request模块是urllib库中的一个子模块,用于发送HTTP请求、获取远程数据和处理URL操作。它提供了一系列函数和类来执行这些操作。

基本用法如下:

  • 导入

由于这个库是python自带的,所以不需要pip install

 
  • 发送GET请求

在上一篇文章中( 【Python爬虫开发基础⑥】计算机网络基础(Web和HTTP)),我们已经介绍了HTTP报文格式,并且介绍了请求头中开始行的常用方法,下面的GET和POST请求就是其中的方法。
使用函数发送HTTP GET请求,并接收服务器返回的数据

 
  • 获取服务器响应

上面一步通过response接收了服务器的响应,可以使用方法读取服务器响应的内容,并将其存储在变量中。

 
  • 处理响应内容

可以对获取到的响应内容进行进一步的处理,例如解码字节流、解析HTML等操作。

 
  • 发送POST请求

如果需要发送POST请求,可以使用函数编码POST请求的参数,并使用属性传递给请求对象

 
  • 设置请求头

这一个操作尤为关键,在一般情况下,为了伪装成一个浏览器,需要设置请求时发送的UA。可以通过创建Request对象,并设置请求头信息发送定制化的请求,例如User-Agent、Referer等。

 

urllib.parse 模块是 Python 标准库中的一部分,用于解析和操作 URL。它提供了一组函数,可以将 URL 拆分为各个组成部分,或者将各个组成部分合并为完整的 URL。

  • 解析 URL

:解析 URL 字符串并返回一个具名元组,包含 URL 的各个组成部分。

 
  • 构建 URL

:将 URL 的各个部分组合成完整的 URL 字符串。

 
  • 编码和解码 URL 参数

:将字典或元组列表形式的查询参数编码为 URL 字符串。
:将 URL 查询字符串解析为字典形式的查询参数。

 
  • 编码和解码 URL 特殊字符

:将字符串中的特殊字符进行 URL 编码。
:将 URL 编码的字符串进行解码,恢复特殊字符的原始形式。

 

urllib.error 模块是 Python 标准库中的一部分,用于处理与 urllib 请求和打开 URL 相关的错误。它提供了一些异常类,用于捕获和处理在使用 urllib 过程中可能出现的异常情况。

  • 异常类

:用于处理 URL 相关的错误,如无法连接到服务器、网络问题等。
:继承自 URLError,用于处理 HTTP 相关的错误,如页面不存在(404)、权限问题等。

  • 捕获异常

使用 结构可以捕获并处理 模块抛出的异常。

 

我们尝试打开一个不存在的 URL ,如果出现 异常,则打印 HTTP 响应状态码和原因;如果出现 异常,则打印 URL 错误原因。

  • 获取错误信息

和 异常对象提供了一些属性来获取更详细的错误信息。

 

如果捕获到 异常,我们可以通过 和 分别获取响应的状态码和原因字符串,通过 获取响应的头部信息。


urllib.robotparser 模块是 Python 标准库中的一部分,用于解析和分析 robots.txt 文件。robots.txt 是一个遵循 Robots Exclusion Protocol(机器人排除协议)的文本文件,用于指示网络爬虫哪些页面可以访问,哪些页面需要排除访问。urllib.robotparser 模块提供了一个 RobotFileParser 类,用于解析 robots.txt 文件并提供方法来判断一个 URL 是否允许被爬取。

  • 创建 RobotFileParser 对象

使用 类的构造函数可以创建一个对象,并使用 方法传入 robots.txt 文件的 URL。

 
  • 读取和分析 robots.txt 文件

使用 方法从 robots.txt 文件中读取内容,并使用 方法解析读取的内容。

 
  • 判断 URL 是否允许访问

使用 方法判断给定的 User-Agent 是否允许访问特定的 URL。

 

首先创建一个 对象,并设置 robots.txt 文件的 URL,然后读取和解析该文件。最后,使用 方法判断给定的 User-Agent 是否允许访问特定的 URL,并进行相应的输出。