Python 使用 Urllib.Request 和 urlopen() 访问互联网
⚡ 智能摘要
urllib 是标准 Python 用于访问互联网数据的模块,允许程序打开 URL并检索 HTML、JSON 或二进制内容。urllib.request.urlopen() 函数连接到网址并将服务器响应直接读取到内存中。 Python.

以下各节解释了 urllib 是什么,以及如何打开一个 urllib 文件。 URL 并阅读其 HTML,以及如何处理错误、下载文件,并在 urllib 和 requests 库之间进行选择。
什么是 urllib?
urllib 是一个 Python 可用于打开的模块 URL它定义了函数和类来帮助 URL 动作。
与 Python您还可以访问和检索来自互联网的数据,例如 XML、HTML 和 JSON 格式的数据,然后直接使用这些数据。在下面的章节中,我们将了解如何从网络检索数据。例如,这里我们使用…… Guru99视频 URL,使用以下方式访问它 Python并打印此 HTML 文件。 URL.
urllib 包包含多个模块:urllib.request 用于打开 URLs,urllib.error 用于处理请求可能引发的异常,urllib.parse 用于构建和解析 URLs,以及用于读取 robots.txt 文件的 urllib.robotparser。
怎么开 URL 使用 Urllib
在运行连接互联网数据的代码之前,我们需要导入…… URL 库模块,或“urllib”。
- 导入 urllib
- 定义主要功能
- 声明变量 webUrl
- 然后调用 urllib 库中的 urlopen 函数。
- 此 URL 我们正在开业的是 Guru99 个教程 YouTube
- 接下来,我们打印结果代码。
- 通过对我们创建的 webUrl 变量调用 getcode 函数来获取结果代码。
- 我们将其转换为字符串,以便将其与字符串“结果代码”连接起来。
- 这将返回一个标准的 HTTP 状态码“200”,表示 HTTP 请求已成功处理。
如何从……获取 HTML 文件 URL in Python
您还可以使用 read() 函数读取 HTML 文件。 Python运行代码后,HTML 文件将显示在控制台中。
- 对 webUrl 变量调用 read() 函数
- read() 方法允许您读取数据文件的内容
- 阅读全部内容 URL 将数据存储到名为 data 的变量中。
- 运行代码,它将以 HTML 格式打印数据。
这是完整的代码:
Python 2示例
# # read the data from the URL and print it # import urllib2 def main(): # open a connection to a URL using urllib2 webUrl = urllib2.urlopen("https://www.youtube.com/user/guru99com") #get the result code and print it print "result code: " + str(webUrl.getcode()) # read the data from the URL and print it data = webUrl.read() print data if __name__ == "__main__": main()
Python 3示例
# # read the data from the URL and print it # import urllib.request # open a connection to a URL using urllib webUrl = urllib.request.urlopen('https://www.youtube.com/user/guru99com') #get the result code and print it print ("result code: " + str(webUrl.getcode())) # read the data from the URL and print it data = webUrl.read() print (data)
如何处理urllib错误: URL错误和 HTTPError
请求并非总能成功。当出现错误时,urllib 会抛出异常而不是返回数据,因此处理这些错误至关重要。urllib.error 模块定义了两个主要的异常类。
- HTTP错误 当服务器返回错误状态码(例如 404 Not Found 或 500 Internal Server Error)时,会引发此异常。它包含状态码和响应正文。
- URL误差 当服务器完全无法访问时,例如由于域名错误或网络连接中断,会引发此异常。它包含一个原因属性,用于解释失败原因。
因为 HTTPError 是以下类的子类 URL错误时,务必先捕获 HTTPError 错误,以便分别处理每种错误类型:
from urllib.request import urlopen from urllib.error import HTTPError, URLError try: response = urlopen("https://www.guru99.com/no-such-page.html") data = response.read() except HTTPError as error: print("HTTP error:", error.code) except URLError as error: print("URL error:", error.reason)
处理这些异常可以防止程序崩溃,并允许您记录问题、重试请求或回退到缓存数据。
如何从某个网站下载文件 URL 使用 urllib
读一个 URL 将响应保存到内存中对于小页面来说是可行的,但对于图像、PDF 文档或数据集,直接将响应保存到磁盘会更方便。urllib.request 模块提供了两种简单的方法来实现这一点。
urlretrieve() 函数下载一个 URL 直接写入本地文件,只需一行代码:
from urllib.request import urlretrieve urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")
为了获得更多控制权,请打开 URL 自行写入字节。以二进制模式打开本地文件,因为 urlopen() 返回的是字节,而不是文本:
from urllib.request import urlopen with urlopen("https://example.com/data.zip") as response: with open("data.zip", "wb") as file: file.write(response.read())
对于非常大的文件,使用 response.read(8192) 在循环中进行读写操作,这样就不会一次性将整个文件保存在内存中。
urllib 与 requests 库的比较 Python
urllib 是以下部分的一部分 Python 由于它是标准库,因此无需安装即可在任何地方使用。第三方 requests 库并非内置,但许多开发者更喜欢用它来处理日常 HTTP 请求,因为它的语法更简洁、更易读。
主要区别在于:
- 安装方式: urllib 附带 Python而 requests 库必须使用 pip 安装。
- 解码: urllib 返回原始字节,需要您自行解码,而 requests 会自动解码文本和 JSON。
- 方便: requests 库用更少的代码处理会话、cookie 和自定义标头。
- 依赖关系: urllib 没有添加任何内容,而 requests 则依赖于底层的 urllib3。
如果您希望零依赖或只需要快速的一次性请求,请选择 urllib。对于涉及身份验证、会话或频繁 API 调用的大型项目,请选择 requests。两者都发送相同的底层 HTTP 请求,因此最终的选择取决于便利性与依赖项数量的多少。


