Python Requests:54K Star,HTTP 库的默认答案

Python Requests:54K Star,HTTP 库的默认答案 文章目录Python Requests54K StarHTTP 库的默认答案1、urllib 有多难用Requests 就有多好用2、哪些功能让开发者离不开它3、安装和版本4、适合的人Python Requests54K StarHTTP 库的默认答案Requests 在 GitHub 上拿到 54K Star 了周下载量 3 亿次被 400 万以上个项目依赖。这是 Kenneth Reitz 在 2011 年开源的一个 Python HTTP 库口号是 “HTTP for Humans”意思是把 HTTP 还给人类而不是机器。十几年过去它成了 Python 开发者发 HTTP 请求的标准做法。1、urllib 有多难用Requests 就有多好用Python 标准库自带了 urllib听起来挺够用了。实际用起来是这样的importurllib.requestimporturllib.parse urlhttps://httpbin.org/postdataurllib.parse.urlencode({key:value}).encode()requrllib.request.Request(url,datadata)req.add_header(Content-Type,application/x-www-form-urlencoded)withurllib.request.urlopen(req)asresponse:print(response.read().decode())在 Requests 里只需要importrequests rrequests.post(https://httpbin.org/post,data{key:value})print(r.text)不需要手动编码参数、不需要手动设置 Header、不需要用 context manager 关连接。Requests 把 HTTP 协议细节收进了合理的默认值里你只管发请求拿结果。2、哪些功能让开发者离不开它解决 urllib 的痛点是入门。Requests 真正让人留下来的是围绕 HTTP 会话的一套设计。Session 与 Cookie。登录后后续请求自动携带 Cookiesrequests.Session()s.post(https://example.com/login,data{user:me,pass:secret})rs.get(https://example.com/dashboard)# 自动带登录态自动解码。服务端返回 gzip 或 deflate 压缩Requests 自己解压。JSON 用r.json()一行拿到 dict。SSL 与超时。证书校验默认开启。超时设timeout5避免永远挂住。认证。Basic Auth、Digest Auth 内置好传 tupleauth(user, pass)。文件上传与流式下载。files{report: open(report.pdf, rb)}和streamTrue处理大文件不占内存。再加 Keep-Alive 连接池、SOCKS 代理、分块传输。Requests 覆盖了生产 HTTP 客户端需要的所有能力不是最全的但是刚好够用。3、安装和版本python-mpipinstallrequests建议python -m pip避免多版本 Python 下的路径混乱。当前支持 Python 3.10。还在用 Python 2 的话Requests 2.27 是最后兼容版但 Python 2 已停维该升了。4、适合的人用 Python 调 API、写爬虫、对接后台Requests 是绕不过的基础库刚学 Python 想接触 HTTP 编程读官方 Quickstart 就能上手在维护老项目、被 urllib 的样板代码拖着的开发者换 Requests 能删一半 HTTP 代码Requests 没发明什么新东西。它把 HTTP 这件事做到位了用项目原话说对使用者来说是一件简单而优雅的事。这个判断放在十几年前成立放在今天也一样。没发明什么新东西。它把 HTTP 这件事做到位了用项目原话说对使用者来说是一件简单而优雅的事。这个判断放在十几年前成立放在今天也一样。