page contents

Python 库手册:urllib URL 操作模块!

urllib 是 Python 内置的标准库,用于处理 URL 操作、网络请求与响应处理。它提供了多个子模块,如 urllib.request、urllib.parse、urllib.error 和 urllib.robotparser,支持从互联网上获取数据、构造和解析 URL、处理异常等。

attachments-2025-07-bvPGkbMF6880377d07a5f.jpgurllib 是 Python 内置的标准库,用于处理 URL 操作、网络请求与响应处理。它提供了多个子模块,如 urllib.request、urllib.parse、urllib.error 和 urllib.robotparser,支持从互联网上获取数据、构造和解析 URL、处理异常等。

常见应用场景:(1)发送 HTTP 请求并读取网页或 API 返回内容。(2)设置请求头、自定义代理、处理重定向等。(3)对 URL 编码、解析、拼接参数。(4)捕获网络请求异常。(5)判断网页是否允许被爬虫访问(robots.txt)。

◆  ◆  ◆核心概念

1、urllib.request用于发送 HTTP/HTTPS 请求,如打开网页、添加请求头、自定义请求对象等。

2、urllib.parse提供 URL 编解码、拆解与拼接功能,是 URL 参数处理的核心模块。

3、urllib.error定义了处理 HTTP 异常(如 404、503)或连接错误的异常类。

4、urllib.robotparser可解析网站 robots.txt 文件,判断特定 URL 是否可被访问。

◆  ◆  ◆应用举例

例 1:获取网页内容from urllib import request

url = 'https://www.python.org'response = request.urlopen(url)html = response.read().decode('utf-8')  # 解码为字符串print(html)例 2:GET 请求带参数from urllib import request, parse

params = {'q': 'mediaTEA'}query_string = parse.urlencode(params)url = f'https://www.baidu.com/search?{query_string}'response = request.urlopen(url)print(response.status)说明:最后打印响应的状态码:200 表示请求成功403 表示被禁止访问404 表示网页未找到503 表示服务器暂时不可用

例 3:POST 请求from urllib import request, parse

data = parse.urlencode({'username': 'admin', 'password': '123'}).encode()req = request.Request('https://httpbin.org/post', data=data)res = request.urlopen(req)print(res.read().decode())例 4:解析 URL 结构from urllib.parse import urlparse

url = 'https://www.example.com/path/page.html?query=abc#section'result = urlparse(url)print(result.netloc)  # 输出 www.example.comprint(result.path)    # 输出 /path/page.html例 5:robots.txt 判断访问权限from urllib import robotparser

rp = robotparser.RobotFileParser()rp.set_url('https://www.python.org/robots.txt')rp.read()print(rp.can_fetch('*', 'https://www.python.org/downloads/'))

◆  ◆  ◆常用函数速览

urllib.request

urlopen(url, data=None, timeout=...)打开 URL 并返回响应对象。参数:url: 字符串 URL 或 Request 对象data: 可选,发送的数据(bytes)timeout: 超时时间(秒)返回:HTTPResponse 对象

Request(url, data=None, headers={}, method='GET')创建一个自定义请求对象参数:url: 请求地址data: 请求数据(POST 需传入 bytes)headers: 字典形式的请求头method: 请求方法,如 GET、POST 等返回:Request 对象

build_opener(*handlers)创建自定义 opener,可用于添加代理、身份认证等返回:OpenerDirector 对象

install_opener(opener)将自定义 opener 设置为全局默认 opener返回:无

urllib.parse

urlencode(query)将字典或键值对元组转换为 URL 查询字符串参数:query 为字典或列表返回:字符串,如 'a=1&b=2'

urlparse(url)将 URL 拆解为 6 个组成部分返回:ParseResult 对象,具有 scheme、netloc、path、params、query、fragment 属性

urljoin(base, url)拼接相对 URL 与基础 URL,返回完整 URL返回:字符串 URL

parse_qs(query)解析查询字符串为字典形式返回:{'key': ['value']} 的字典

urllib.error

URLError用于捕获连接失败、解析失败等非 HTTP 状态错误可通过 .reason 查看错误信息

HTTPErrorURLError 的子类,用于捕获 HTTP 状态错误(如 404、500)可通过 .code 查看状态码,.read() 获取错误页面内容

urllib.robotparser

RobotFileParser.set_url(url)设置 robots.txt 文件 URL

RobotFileParser.read()下载并读取 robots.txt 文件

RobotFileParser.can_fetch(useragent, url)判断特定 user-agent 是否允许访问指定 URL返回:布尔值

◆  ◆  ◆补充说明

1、urllib 模块适合小规模数据交互或轻量级爬虫项目。

2、对于更复杂的请求(如会话管理、Cookie、自动跳转等),推荐使用第三方库 requests。

3、urllib 默认以 utf-8 编码处理字符串,遇到乱码建议检查 response.headers 的字符集声明。

4、urlopen 默认是 GET 请求,若传入 data 参数则为 POST。

5、响应对象的 .read() 方法返回的是 bytes 类型内容,需手动 .decode()。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-07-23 09:15
  • 阅读 ( 35 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

2172 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2172 文章
  3. Pack 1335 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章