在Python中,urlliburllib2urllib3requests模块有什么不同?为什么有三个?他们似乎在做同样的事情.

推荐答案

我知道已经说过了,但我强烈推荐requests Python包.

如果您使用过Python以外的语言,您可能会认为urlliburllib2很容易使用,代码不多,而且功能很强,这就是我过go 的 idea .但是requests软件包是如此的有用和简短,每个人都应该使用它.

首先,它支持完全restful API,并且非常简单:

import requests

resp = requests.get('http://www.mywebsite.com/user')
resp = requests.post('http://www.mywebsite.com/user')
resp = requests.put('http://www.mywebsite.com/user/put')
resp = requests.delete('http://www.mywebsite.com/user/delete')

无论是GET/POST,您都不必再次对参数进行编码,它只需将字典作为参数即可:

userdata = {"firstname": "John", "lastname": "Doe", "password": "jdoe123"}
resp = requests.post('http://www.mywebsite.com/user', data=userdata)

此外,它甚至还有一个内置的JSON解码器(同样,我知道编写json.loads()个不会太多,但这肯定很方便):

resp.json()

或者,如果您的响应数据仅为文本,请使用:

resp.text

这只是冰山一角.以下是请求网站的功能列表:

  • 国际域名和URL
  • 保持活力&;连接池
  • 具有Cookie持久性的会话
  • 浏览器风格的SSL验证
  • 基本/摘要身份验证
  • 优雅的 keys /价值cookies
  • 自动减压
  • Unicode响应正文
  • 多部分文件上传
  • 连接超时
  • .netrc支持
  • 列表项
  • Python 2.7、3.6-3.9
  • 线程安全.

Python相关问答推荐

将行从一个DF添加到另一个DF

指示组内的rejected_time是否在creation_timestamp后5分钟内

在函数内部使用eval(),将函数的输入作为字符串的一部分

比较两个数据帧并并排附加结果(获取性能警告)

为什么我的Python代码在if-else声明中的行之前执行if-else声明中的行?

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

Pandas 有条件轮班操作

沿着数组中的轴计算真实条目

_repr_html_实现自定义__getattr_时未显示

log 1 p numpy的意外行为

如何创建一个缓冲区周围的一行与manim?

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

将JSON对象转换为Dataframe

在单个对象中解析多个Python数据帧

Pandas:填充行并删除重复项,但保留不同的值

解决Geopandas和Altair中的正图和投影问题

当HTTP 201响应包含 Big Data 的POST请求时,应该是什么?  

在我融化极点数据帧之后,我如何在不添加索引的情况下将其旋转回其原始形式?

为什么Visual Studio Code说我的代码在使用Pandas concat函数后无法访问?

Pandas:将值从一列移动到适当的列