千家信息网

urllib库常用函数有哪些

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了urllib库常用函数有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇urllib库常用函数有哪些文章都会有所收获,下面我们一起来看看吧。一、什么是
千家信息网最后更新 2025年11月07日urllib库常用函数有哪些

这篇文章主要介绍了urllib库常用函数有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇urllib库常用函数有哪些文章都会有所收获,下面我们一起来看看吧。

一、什么是 urllib 库?

Python3 中将 Python2 中的 urllib 和 urllib2 两个库整合为一个 urllib 库,所以现在一般说的都是 Python3 中的 urllib 库,那么 urllib 库是什么呢?如何使用 urllib 库?urllib 库的常用函数有哪些呢?

urllib主要分为以下四个功能模块:

  • urllib.request(请求模块)

  • urllib.parse(解析模块)

  • urllib.error(异常处理模块)

  • urllib.robotparser(robots.txt 文件解析模块)

urllib 是 Python 内置的 HTTP 请求库,无需安装,可直接使用,也是爬虫开发人员常用的一个库,今天小编就给大家总结一下 urllib 库一些常用函数的基本用法。

二、urllib用法讲解

1、urllib.request.urlopen() 函数

创建一个标识远程 url 的文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。语法如下:

urllib.request.urlopen(url,data = None,[timeout]*,cafile = None,capath = None,cadefault = False,context = None)

  • url:请求的 url;

  • data:请求的 data,如果设置了这个值,那么将变成 post 请求;

  • timeout:设置网站的访问超时时间句柄对象;

  • cafile和capath:用于 HTTPS 请求中,设置 CA 证书及其路径。

示例

from urllib import request

response = request.urlopen('http://www.baidu.com') #get方式请求

print(response.read().decode('utf-8') #获取响应的内容并进行解码操作

urlopen() 返回对象提供的方法有:

  1. read()、readline()、readlines()、fileno()、close():对 HTTPR esponse 类型数据进行操作;

  2. info():返回 HTTPMessage 对象,表示远程服务器 返回的头信息 ;

  3. getcode():返回 HTTP 状态码 geturl():返回请求的 url;

  4. getheaders():响应的头部信息 ;

  5. getheader('Server'):返回响应头指定参数 Server 的值;

  6. status:返回状态码 ;

  7. reason:返回状态的详细信息 。

2、urllib.request.urlretrieve() 函数

这个函数可以方便的将网页上的一个文件保存到本地。语法如下:

urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)

  • url:远程数据的地址 ;

  • filename:保存文件的路径,如果为空,则下载为临时文件 ;

  • reporthook:钩子函数 连接服务器成功以及每个数据块下载完成时各调用一次,包含 3 个参数,依次为已经下载的数据块,数据块的大小,总文件的大小,可用于显示下载进度 ;

  • data:post 到服务器的数据。

示例

from urllib import request

request.urlretrieve('http://www.baidu.com/','baidu.html') #将百度的首页信息下载到本地

3、urllib.parse.urlencode() 函数

urlencode 可以把字典数据转换为 URL 编码的数据。语法如下:

urllib.parse.urlencode(query, doseq=False, safe='', encoding=None, errors=None, quote_via=quote_plus)

  • query:查询参数;

  • doseq:序列元素是否单独转换;

  • safe:安全默认值;

  • encoding:编码;

  • errors:错误默认值;

  • quote_via:查询参数的成份是str时,safe, encoding, errors 传递给的指定函数,默认为 quote_plus(),加强版 quote()。

示例

from urllib import parse

data = {'姓名':'W3CSchool','问好':'Hello W3CSchool','年龄':100}

qs = parse.urlencode(data)

print(qs)

# %E5%A7%93%E5%90%8D=W3CSchool&%E9%97%AE%E5%A5%BD=Hello+W3CSchool&%E5%B9%B4%E9%BE%84=100

4、urllib.parse.parse_qs() 函数

可以将经过编码后的 url 参数进行解码。语法如下:

urllib.parse.parse_qs(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace')

  • keep_blank_values:当 value 为空时,表示是否需要显示 key,默认为 False

  • strict_parsing:指示如何处理解析错误的标志。如果为 False(默认值),则会自动忽略错误。否则错误会引发 ValueError 异常。

示例

from urllib import parse

data = {'姓名':'W3CSchool','问好':'hello W3CSchool','年龄':100}

qs = parse.urlencode(data)

print(qs)

#%E5%A7%93%E5%90%8D=W3CSchool&%E9%97%AE%E5%A5%BD=hello+W3CSchool&%E5%B9%B4%E9%BE%84=100

print(parse.parse_qs(qs))

#{'姓名': ['W3CSchool'], '问好': ['hello W3CSchool'], '年龄': ['100']}

5、urllib.parse.parse_qsl() 函数

基本用法与 parse_qs() 函数一致,只是 urllib.parse.parse_qs() 函数返回字典,urllib.parse.parse_qsl() 函数放回列表。语法如下:

urllib.parse.parse_qsl(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace')

示例

from urllib import parse

data = {'姓名':'W3CSchool','问好':'hello W3CSchool','年龄':100}

qs = parse.urlencode(data)

print(parse.parse_qs(qs))

#[('姓名', 'W3CSchool'), ('问好', 'hello W3CSchool'), ('年龄', '100')]

6、urllib.parse.urlparse() 和 urllib.parse.urlsplit() 函数

有时候拿到一个 url,想要对这个 url 中的各个组成部分进行分割,那么这时候就可以使用 urlparse 或者是 urlsplit 来进行分割。 各自语法如下:

urllib.parse.urlparse(urlstring, scheme=", allow_fragments=True)

urllib.parse.urlsplit(urlstring, scheme=", allow_fragments=True)

urlparse 和 urlsplit 基本上是一模一样的。

唯一不一样的地方是: urlparse 里有 params 属性,而 urlsplit 没有这个 params 属性。

示例

from urllib import parse

url = 'http://www.baidu.com/index.html;user?id=S#comment'

result = parse.urlparse(url)

# result = parse.urlsplit(url)

print(result)

print(result.scheme)

print(result.netloc)

print(result.path)

print(result.params) # urlparse 里面有 params 属性,而 urlsplit 没有这个属性。

7、urllib.error 模块

urllib 的 error 模块定义了由 urllib.request 请求产生的异常。如果请求失败,urllib.request 便会抛出 error 模块的异常。

  • URLError

URLError 类来自 urllib 的 error 模块,是继承 OSError 模块,是异常模块的基类,具有属性 reason,即返回错误原因。

示例

from urllib import request, error

try:

resp = request.urlopen('https://w3cschool.c/index.html')

except error.URLError as e:

print(e.reason)

# [Errno 11001] getaddrinfo failed

  • HTTPError

它是 URLError 的子类,专门用来处理 HTTP 请求错误,具备以下三个属性:

  1. code:返回HTTP状态码

  2. reason:异常原因

  3. headers:请求头

示例

from urllib import request

response = request.urlopen('http://www.baidu.com') #get方式请求

print(response.read().decode('utf-8') #获取响应的内容并进行解码操作

#404

当然,大多时候都是将 URLError 和 HTTPError 结合才进行异常处理,首先通过 HTTPError 来捕获 url 的错误状态码、异常原因、请求头等信息,如果不是该类型错误,再捕获 URLError,输出错误原因,最后是 else 来处理正常的逻辑。

示例

from urllib.request import Request, urlopen

from urllib.error import URLError, HTTPError

resp = Request('http://www.baidu.cnc/')

try:

response = urlopen(resp)

except HTTPError as e:

print('(www.baidu.cnc)服务器无法完成请求。')

print('错误代码: ', e.code)

except URLError as e:

print('我们无法连接到服务器。')

print('原因: ', e.reason) else:

print("链接成功!")

print(response.read().decode("utf-8"))

以上就是 urllib 库中常用的函数,希望屏幕前的你多注重联系,理论与实际相结合才是最好的学习方式!推荐阅读:Python 静态爬虫、Python Scrapy网络爬虫。

最后,我们来总结一下常见的各种状态码含义:

  • 200:请求正常,服务器正常的返回数据;

  • 301:永久重定向。比如在访问 www.jingdong.com 的时候会重定向到 www.jd.com;

  • 302:临时重定向。比如在访问一个需要登录的页面的时候,而此时没有登录,那么就会重定向到登录页面;

  • 400:请求的url在服务器上找不到。换句话说就是请求url错误;

  • 403:服务器拒绝访问,权限不够;

  • 500:服务器内部错误。可能是服务器出现 bug 了。

关于"urllib库常用函数有哪些"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"urllib库常用函数有哪些"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

函数 模块 错误 数据 服务器 服务 示例 常用 文件 属性 状态 语法 信息 原因 参数 姓名 对象 年龄 内容 处理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南沙软件开发哪家正规 国家网络安全政策的优越性 网络安全股票中的茅台 网络技术聚合电路怎么做 计算机网络技术和计算机应用计算 新塘亿鑫网络技术服务部 郴州计算机软件开发在哪学 网络安全大赛是电竞么 中国刑法第二十七条的网络安全法 汽车网络技术安全作用 u8引入不是数据库的一部分 zfw网络安全密钥 网络安全专业发展方向 互联网科技网络 经信局网络安全宣传 南京现代软件开发注意事项 新疆淘金谷 电脑版 游戏服务器 百度网盘的数据库技术过程 dede重装 数据库密码 四川网络时间同步服务器 一般服务器内存 数据库技术为何产生 十荟团服务器苹果怎么下载 软考网络安全工程师历年试题 网络安全服务有哪些 软件开发产品设计 怎么向115服务器加入磁力文件 肇庆软件开发设计 数据库技术未来的发展趋势 湖南岳阳硅谷软件开发学院
0