从用户在浏览器输入内容,到发起请求,最后接收响应、解析并渲染页面……整个过程的细节非常复杂,涉及请求的构造,HTTP、TCP、IP 层的网络传输通信,响应的处理等内容。但若借助 HTTP 库,将只需要关心请求的 URL 链接、参数、请求头及请求体等信息,而不再需要关心底层通信和传输原理。并且还可将返回的响应转换为 Python 对象,一遍获取响应状态码、响应头、响应体等信息。这些 HTTP 库中,最基础的有 urllib、requests、httpx 等。 :::danger Python 2 的 ullib 和 urlib2 两个库都可实现 HTTP 请求,而 Python 3 将这两个库统一为 urlib。 :::

urlib 的简介

urlib 是 Python 内置的 HTTP 请求库,由以下 4 个模块组成:

  1. request:urlib 中最基本的 HTTP 请求模块,用于模拟在浏览器里输入网址后回车时的请求发送,需要目标 URL 及额外参数;
  2. error:异常处理模块。如果出现请求异常,那么我们可以捕获这些异常,然后进行重试或其他操作以保证程序运行不会意外终止;
  3. parse:一个工具模块。提供了许多URL的处理方法,例如拆分、解析、合并等;
  4. robotparser:主要用来识别网站的robots.txt文件,然后判断哪些网站可以爬,哪些网站不可以,它其实用得比较少。

    发送请求