---
url: /python/httpx.md
description: >-
  Python的HTTPX是一个非常神奇的库，它允许你使用一个简单的API来构建一个HTTP客户端，它支持多种协议，包括HTTP/1.1、HTTP/2、WebSockets和HTTP/3。
---

# 一个神奇的Python库——Python下一代HTTP客户端HTTPX

从我15年开始学习Python，requests在我心中的地位从来没有动摇过。然而，直到我遇到HTTPX——Python 的下一代 HTTP 客户端，未来我将会更多的使用。

## 什么是HTTPX

HTTPX 是 Python 3 的全功能 HTTP 客户端，它提供同步和异步 API，并支持 HTTP/1.1 和 HTTP/2。

简单会，HTTPX是requests更好的替代品。

![](/img/dfa176f6-89ad-4475-99c8-df46d0381c32.png)

## 功能

requests有的HTTPX也都有：

* 国际域名和 URL
* 保持活动和连接池
* 具有 Cookie 持久性的会话
* 浏览器样式的 SSL 验证
* 基本/摘要身份验证
* 优雅的键/值 Cookie
* 自动减压
* 自动内容解码
* Unicode 响应主体
* 分段文件上传
* HTTP(S) 代理支持
* 连接超时
* 流式下载
* .netrc 支持
* 分块请求

HTTPX 在requests之上又提供：

* 广泛兼容请求的 API
* 标准同步接口，但如果您需要，也可以提供异步支持
* HTTP/1.1和 HTTP/2 支持
* 能够直接向WSGI 应用程序或ASGI 应用程序发出请求
* 到处都有严格的超时限制
* 完整类型注释
* 100％测试覆盖率

## 快速开始

1. 使用pip安装

```sh
pip install httpx
```

2. 导入HTTPX

```python
import httpx
```

3. 从访问一个网页开始

我们以获取百度热搜为例：

![](/img/953d094b-8363-47df-add9-cf6f69c9e2bd.png)

```python
r = httpx.get('https://top.baidu.com/board?tab=realtime')
r.text
```

![](/img/d65eb5a4-a20c-4ee1-9de3-4cd2d11b3b0f.png)

从结果看，我们已经获取到了页面的HTML，其中包含了我们感兴趣的热搜数据。

## 进阶

关于如何提取HTML中有用的数据并存入数据库中，将会在后续的文章中为大家介绍另外的工具。如果你想要继续探索HTTPX的强大能力，可以关注公众号：遇码，回复**httpx**获取官方文档。
